Archived

This forum has been archived. Please start a new discussion on GitHub.

Demo IceStorm error

Hi All
I am new and try to run demo on my local box. I use C# demo of IceStrom. The box is Win7. Ice version is 3.4.2

The error message are :

System.MissingFieldException: Field not found: 'IceUtilInternal.StringUtil.OrdinalStringComparer'.
at IceInternal.IncomingBase.handleException__(Exception exc) in c:\IceBuilds\VC9\Release\cf\src\Ice\Incoming.cs:line 212
-! 2/6/2012 12:10:56:742 subscriber.exe: warning: dispatch exception:
identity: 819fd58c-9812-4bdd-b761-67032a0b47cf
facet:
operation: tick
remote host: xxx.xxx.xxx.99 remote port: 57642
System.MissingFieldException: Field not found: 'IceUtilInternal.StringUtil.OrdinalStringComparer'.
at IceInternal.IncomingBase.handleException__(Exception exc) in c:\IceBuilds\VC9\Release\cf\src\Ice\Incoming.cs:line 212
-! 2/6/2012 12:10:57:742 subscriber.exe: warning: dispatch exception:
identity: 819fd58c-9812-4bdd-b761-67032a0b47cf
facet:
operation: tick
remote host: xxx.xxx.xxx.99 remote port: 57642
System.MissingFieldException: Field not found: 'IceUtilInternal.StringUtil.OrdinalStringComparer'.
at IceInternal.IncomingBase.handleException__(Exception exc) in c:\IceBuilds\VC9\Release\cf\src\Ice\Incoming.cs:line 212



I started demo following the instruction in Readme.txt

In cmd window 1:
icebox --Ice.Config=config.icebox

In cmd window 2: (I also tried subscriber tick, errer message is from tick )
subscriber time

In cmd window 3: (I also tried publisher tick)
publisher time

The config file as follows:
##########################
##config.icebox
IceBox.ServiceManager.Endpoints=tcp -p 9998
Ice.Warn.Connections=1
Ice.Trace.Network=2
Ice.Trace.Protocol=1
#########################
##the service file: config.service
IceStorm.InstanceName=DemoIceStorm
IceStorm.TopicManager.Endpoints=default -p 10000
IceStorm.Publish.Endpoints=tcp -p 10001:udp -p 10001
IceStorm.Trace.TopicManager=2
IceStorm.Trace.Topic=1
IceStorm.Trace.Subscriber=1
IceStorm.Flush.Timeout=2000
Ice.Trace.Network=2
Freeze.DbEnv.IceStorm.DbHome=db


The message from icebox: (I replaced real ip address with xxx.xxx.xxx.99)
======================================================
-- 02/06/12 12:10:35.782 icebox: Network: attempting to bind to tcp socket 0.0.0.0:9998
-- 02/06/12 12:10:35.795 icebox: Network: accepting tcp connections at 0.0.0.0:9998
local interfaces: xxx.xxx.xxx.99, 127.0.0.1
-- 02/06/12 12:10:35.814 icebox: Network: published endpoints for object adapter `IceBox.ServiceManager':
tcp -h xxx.xxx.xxx.99 -p 9998
-- 02/06/12 12:10:35.837 icebox-IceStorm: Network: attempting to bind to tcp socket 0.0.0.0:10000
-- 02/06/12 12:10:35.852 icebox-IceStorm: Network: accepting tcp connections at 0.0.0.0:10000
local interfaces: xxx.xxx.xxx.99, 127.0.0.1
-- 02/06/12 12:10:35.870 icebox-IceStorm: Network: published endpoints for object adapter `IceStorm.TopicManager':
tcp -h xxx.xxx.xxx.99 -p 10000
-- 02/06/12 12:10:35.885 icebox-IceStorm: Network: attempting to bind to tcp socket 0.0.0.0:10001
-- 02/06/12 12:10:35.895 icebox-IceStorm: Network: accepting tcp connections at 0.0.0.0:10001
local interfaces: xxx.xxx.xxx.99, 127.0.0.1
-- 02/06/12 12:10:35.912 icebox-IceStorm: Network: attempting to bind to udp socket 0.0.0.0:10001
-- 02/06/12 12:10:35.925 icebox-IceStorm: Network: starting to receive udp packets
local address = 0.0.0.0:10001
local interfaces: xxx.xxx.xxx.99, 127.0.0.1
-- 02/06/12 12:10:35.944 icebox-IceStorm: Network: published endpoints for object adapter `IceStorm.Publish':
tcp -h xxx.xxx.xxx.99 -p 10001:udp -h xxx.xxx.xxx.99 -p 10001
-- 02/06/12 12:10:36.312 icebox-IceStorm: TopicManager: loading topic "time" from database. id: DemoIceStorm/topic.time subscribers:
-- 02/06/12 12:10:45.569 icebox-IceStorm: Network: accepted tcp connection
local address = 127.0.0.1:10000
remote address = 127.0.0.1:57636
-- 02/06/12 12:10:45.681 icebox-IceStorm: Network: accepted tcp connection
local address = xxx.xxx.xxx.99:10000
remote address = xxx.xxx.xxx.99:57637
-- 02/06/12 12:10:45.713 icebox-IceStorm: Network: accepted tcp connection
local address = xxx.xxx.xxx.99:10001
remote address = xxx.xxx.xxx.99:57638
-- 02/06/12 12:10:55.207 icebox-IceStorm: Network: accepted tcp connection
local address = 127.0.0.1:10000
remote address = 127.0.0.1:57639
-- 02/06/12 12:10:55.453 icebox-IceStorm: Network: accepted tcp connection
local address = xxx.xxx.xxx.99:10000
remote address = xxx.xxx.xxx.99:57641
-- 02/06/12 12:10:55.476 icebox-IceStorm: Topic: time: subscribeAndGetPublisher: 819fd58c-9812-4bdd-b761-67032a0b47cf
-- 02/06/12 12:10:55.740 icebox-IceStorm: Network: trying to establish tcp connection to xxx.xxx.xxx.99:57640
-- 02/06/12 12:10:55.760 icebox-IceStorm: Network: tcp connection established
local address = xxx.xxx.xxx.99:57642
remote address = xxx.xxx.xxx.99:57640
-- 02/06/12 12:10:58.639 icebox-IceStorm: Network: closing tcp connection
local address = 127.0.0.1:10000
remote address = 127.0.0.1:57639
-- 02/06/12 12:10:58.639 icebox-IceStorm: Network: closing tcp connection
local address = xxx.xxx.xxx.99:57642
remote address = xxx.xxx.xxx.99:57640
-- 02/06/12 12:10:58.657 icebox-IceStorm: Network: closing tcp connection
local address = xxx.xxx.xxx.99:10000
remote address = xxx.xxx.xxx.99:57641
=================================================
message from subscriber window:
-! 2/6/2012 12:10:55:823 subscriber.exe: warning: dispatch exception:
identity: 819fd58c-9812-4bdd-b761-67032a0b47cf
facet:
operation: tick
remote host: xxx.xxx.xxx.99 remote port: 57642
System.MissingFieldException: Field not found: 'IceUtilInternal.StringUtil.OrdinalStringComparer'.
at IceInternal.IncomingBase.handleException__(Exception exc) in c:\IceBuilds\VC9\Release\cf\src\Ice\Incoming.cs:line 212
-! 2/6/2012 12:10:56:742 subscriber.exe: warning: dispatch exception:
identity: 819fd58c-9812-4bdd-b761-67032a0b47cf
facet:
operation: tick
remote host: xxx.xxx.xxx.99 remote port: 57642
System.MissingFieldException: Field not found: 'IceUtilInternal.StringUtil.OrdinalStringComparer'.
at IceInternal.IncomingBase.handleException__(Exception exc) in c:\IceBuilds\VC9\Release\cf\src\Ice\Incoming.cs:line 212
-! 2/6/2012 12:10:57:742 subscriber.exe: warning: dispatch exception:
identity: 819fd58c-9812-4bdd-b761-67032a0b47cf
facet:
operation: tick
remote host: xxx.xxx.xxx.99 remote port: 57642
System.MissingFieldException: Field not found: 'IceUtilInternal.StringUtil.OrdinalStringComparer'.
at IceInternal.IncomingBase.handleException__(Exception exc) in c:\IceBuilds\VC9\Release\cf\src\Ice\Incoming.cs:line 212

===============================================
message from publisher window:
publishing tick events. Press ^C to terminate the application.


After I terminat the subscriber, I got connect error. this is understable
-- 02/06/12 12:10:59.753 icebox-IceStorm: Network: failed to establish tcp connection
local address: 0.0.0.0:57643
remote address: xxx.xxx.xxx.99:57640
Network.cpp:1387: Ice::ConnectionRefusedException:
connection refused: The remote computer refused the network connection.
-- 02/06/12 12:10:59.802 icebox-IceStorm: Network: trying to establish tcp connection to xxx.xxx.xxx.99:57640
-- 02/06/12 12:11:00.815 icebox-IceStorm: Network: failed to establish tcp connection
local address: 0.0.0.0:57644
remote address: xxx.xxx.xxx.99:57640
Network.cpp:1387: Ice::ConnectionRefusedException:
connection refused: The remote computer refused the network connection.
-- 02/06/12 12:11:00.841 icebox-IceStorm: Subscriber: 0000000002CD88E0 819fd58c-9812-4bdd-b761-67032a0b47cf subscriber errored out: Network.cpp:1387: Ice::ConnectionRefusedException:
connection refused: The remote computer refused the network connection. retry: 0/0
-- 02/06/12 12:11:00.866 icebox-IceStorm: Network: trying to establish tcp connection to xxx.xxx.xxx.99:57640
-- 02/06/12 12:11:01.884 icebox-IceStorm: Network: failed to establish tcp connection
local address: 0.0.0.0:57645
remote address: xxx.xxx.xxx.99:57640
Network.cpp:1387: Ice::ConnectionRefusedException:
connection refused: The remote computer refused the network connection.
-- 02/06/12 12:11:02.095 icebox-IceStorm: Network: closing tcp connection
local address = 127.0.0.1:10000
remote address = 127.0.0.1:57636
-- 02/06/12 12:11:02.114 icebox-IceStorm: Network: closing tcp connection
local address = xxx.xxx.xxx.99:10000
remote address = xxx.xxx.xxx.99:57637
-- 02/06/12 12:11:02.129 icebox-IceStorm: Network: closing tcp connection
local address = xxx.xxx.xxx.99:10001
remote address = xxx.xxx.xxx.99:57638


Thanks

C Shen

Comments

  • xdm
    xdm La Coruña, Spain
    Hi Shen,

    Looking at the error you posted seems you are not using the right assemblies, you should use assemblies from Ice-3.4.2\bin directory, not in Ice-3.4.2\bin\cf (CF is for .NET Compact Framework).

    If you build the demo from command line, review cs/config/Make.rules.mak.cs and ensure that the line with COMPACT = yes is commented out. But is easier to build the demos from Visual Studio, for that you must first install Ice-3.4.2 binary distribution if you have not done yet.
  • icestorm demo

    Hi,
    I load the project without change any setting. I looked at the reference, it shows all from
    \ice-3.4.2\bin
    When I goto Ice configuration, and check/uncheck the refernce for ice or icestorm, they added reference to ice-3.4.2\bin\ice.dll and icestorm.dll
  • xdm
    xdm La Coruña, Spain
    Hi Shen,

    The problem seems to happen because the Ice.dll in the demo dir is override by the one in bin\cf. I can reproduce this if i build the demo, then copy bin\cf\Ice.dll to the demo directory and then when run i get the same error you posted.

    Can you manually copy the Ice.dll from Ice-3.4.2\bin\Ice.dll to the demo directory and try again.

    Have you try to rebuild the demos? If the error still persist after rebuild can you post the output of the Build in Visual Studio, should be something like:
    C:\Windows\Microsoft.NET\Framework\v4.0.30319\Csc.exe /noconfig /unsafe- /checked- /nowarn:1701,1702 /nostdlib+ /errorreport:prompt /warn:4 /baseaddress:285212672 /define:DEBUG;TRACE /reference:"C:\Program Files\ZeroC\Ice-3.4.2\bin\Ice.dll" /reference:"C:\Program Files\ZeroC\Ice-3.4.2\bin\IceStorm.dll" /reference:C:\Windows\Microsoft.NET\Framework\v2.0.50727\mscorlib.dll /reference:"C:\Program Files\Reference Assemblies\Microsoft\Framework\v3.5\System.Core.dll" /reference:C:\Windows\Microsoft.NET\Framework\v2.0.50727\System.dll /debug+ /debug:full /filealign:4096 /optimize- /out:obj\Debug\subscriber.exe /target:exe /warnaserror+ Clock.cs Subscriber.cs
    _CopyFilesMarkedCopyLocal:
      Copying file from "C:\Program Files\ZeroC\Ice-3.4.2\bin\Ice.dll" to ".\Ice.dll".
      Copying file from "C:\Program Files\ZeroC\Ice-3.4.2\bin\IceStorm.dll" to ".\IceStorm.dll".
      Copying file from "C:\Program Files\ZeroC\Ice-3.4.2\bin\Ice.pdb" to ".\Ice.pdb".
      Copying file from "C:\Program Files\ZeroC\Ice-3.4.2\bin\Ice.xml" to ".\Ice.xml".
      Copying file from "C:\Program Files\ZeroC\Ice-3.4.2\bin\IceStorm.pdb" to ".\IceStorm.pdb".
      Copying file from "C:\Program Files\ZeroC\Ice-3.4.2\bin\IceStorm.xml" to ".\IceStorm.xml".
    

    here you see the Ice.dll is reference from Ice-3.4.2\bin and also copied from the same directory.
  • Demo IceStorm C#

    Same. when I manually copied ice.dll and icestorm.dll to demo folder. Got same result.

    I also repaired the install. Got the same.

    I also copied every thing in bin and bin\vc100\x64 to local, got the same.


    Here is my Path

    PATH=%PATH%;E:\Program Files (x86)\ZeroC\Ice-3.4.2\bin;
    E:\Program Files (x86)\ZeroC\Ice-3.4.2\bin\vc100\x64;
    E:\Program Files (x86)\ZeroC\Ice-3.4.2\lib\vc100\x64;
    E:\Program Files (x86)\ZeroC\Ice-3.4.2-ThirdParty\bin;
    E:\Program Files (x86)\ZeroC\Ice-3.4.2-ThirdParty\lib;


    LIBPATH=E:\Program Files (x86)\ZeroC\Ice-3.4.2\lib;
    E:\Program Files (x86)\ZeroC\Ice-3.4.2\lib\vc100\x64;
    E:\Program Files (x86)\ZeroC\Ice-3.4.2-ThirdParty\lib\vc100\x64

    INCLUDE=E:\Program Files (x86)\ZeroC\Ice-3.4.2\include;
    E:\Program Files (x86)\ZeroC\Ice-3.4.2-ThirdParty\include

    I went to CPP demo. let publisher run from cs demo and subscriber run from cpp demo. works.

    in cpp demo folder, there is not dlls so I think it uses the dll in the search path
    in cs flder, I delete all dlls.
    when I run it says:

    !! 2/8/2012 15:26:54:368 publisher.exe: error: unknown exception:
    System.IO.FileNotFoundException: Could not load file or assembly 'IceStorm, Version=3.4.2.0, Culture=neutral, PublicKeyToken=cdd571ade22f2f16' or one of its dependencies. The system cannot find the file specified.
    File name: 'IceStorm, Version=3.4.2.0, Culture=neutral, PublicKeyToken=cdd571ade22f2f16'
    at Publisher.App.run(String[] args)
    at Ice.Application.doMain(String[] args, InitializationData initData) in c:\IceBuilds\VC9\Release\cf\src\Ice\Application.cs:line 495

    WRN: Assembly binding logging is turned OFF.
    To enable assembly bind failure logging, set the registry value [HKLM\Software\Microsoft\Fusion!EnableLog] (DWORD) to 1.
    Note: There is some performance penalty associated with assembly bind failure logging.
    To turn this feature off, remove the registry value [HKLM\Software\Microsoft\Fusion!EnableLog].
  • Demo IceStorm C#

    problem solved.
    I install Ice.dl, icestorm.dll into GAC. so now for cs demo, it will always use gac first and it works.
    I have no idea which one before it was used. All the path and link pointing to the correct one.
    anyway. it works now both for cpp and cs demo
  • xdm
    xdm La Coruña, Spain
    glad it worked
    in cs flder, I delete all dlls.
    when I run it says:

    !! 2/8/2012 15:26:54:368 publisher.exe: error: unknown exception:
    System.IO.FileNotFoundException: Could not load file or assembly 'IceStorm, Version=3.4.2.0, Culture=neutral, PublicKeyToken=cdd571ade22f2f16' or one of its dependencies. The system cannot find the file specified.
    File name: 'IceStorm, Version=3.4.2.0, Culture=neutral, PublicKeyToken=cdd571ade22f2f16'
    at Publisher.App.run(String[] args)
    at Ice.Application.doMain(String[] args, InitializationData initData) in c:\IceBuilds\VC9\Release\cf\src\Ice\Application.cs :line 495

    Seems to me that you have previously installed cf\Ice.dll into GAC, because Ice.dll was still found when you remove it from the application folder, and the exception stack shows cf\src that means was using Ice.dll for .NET compact framework.

    .NET look first in GAC and then in to current folder, so if Ice.dll was not in current folder it was in GAC.

    What if you remove Ice.dll and IceStorm.dll from GAC and rebuild cs demos, does it work?