Home Help Center

Dynamic Ice and Blobject (revisited)

KE5CRPKE5CRP Member
OK.. now on the other end of the system... trying to dispatch the event to subscribers... I'm getting collocation exceptions when I call ice_invoke on the subscriber proxy (again.. its a direct delegate).....

if I ice_colo(false) on the proxy, the ice_invoke call kills the thread making the call rather than throwing an exception.. so I have zero clue as to whats going on in this case

are there no debug dlls available for the C# interface so I can step into the code ??

Ideas why its not dispatching the invocation to the subscriber ??

Comments

  • mesmes CaliforniaAdministrators, ZeroC Staff Mark SpruiellOrganization: ZeroC, Inc.Project: Ice Developer ZeroC Staff
    I'm not sure what you mean by "the ice_invoke call kills the thread making the call". Can you elaborate? Have you tried wrapping things in a try/catch block to trap System.Exception?
    are there no debug dlls available for the C# interface so I can step into the code ??
    We don't distribute the debug DLL for C#, but you can easily build one yourself by downloading and compiling the Ice for C# source distribution.

    Take care,
    - Mark
  • KE5CRPKE5CRP Member
    I'm working on a source build right now

    I've got the call wrapped in a try/catch, but the catch never gets hit, and I get a trace message that the thread died

    --- a little later

    debug dlls do the same thing.... the thread just dies without throwing an exception
  • KE5CRPKE5CRP Member
    ok -- more info :)

    got the debug dll working... had a release DLL in the GAC that had to be removed before it would see the debug DLLs

    new problem:
    with oneway proxy.. everything on the publishing side of the test works fine, but I never get the calls dispatched to the subscriber

    I switched it to twoway, and the 1st publish hangs indefinitly

    in both cases, protocol traces DO show the requests going out

    traced it all the way down to TcpTransciever.read during a ConnectionI.validate call... getting a WouldBlock response
    >	icecs.dll!IceInternal.TcpTransceiver.read(IceInternal.BasicStream stream = {IceInternal.BasicStream}, int timeout = -1) Line 207	C#
     	icecs.dll!Ice.ConnectionI.validate() Line 93 + 0x1c bytes	C#
     	icecs.dll!IceInternal.OutgoingConnectionFactory.create(IceInternal.Endpoint[] endpoints = {Length=1}, bool compress = false) Line 278	C#
     	icecs.dll!IceInternal.DirectReference.getConnection(bool comp = false) Line 1050 + 0x10 bytes	C#
     	icecs.dll!Ice._ObjectDelM.setup(IceInternal.Reference rf = {IceInternal.DirectReference}) Line 1166 + 0x10 bytes	C#
     	icecs.dll!Ice.ObjectPrxHelperBase.__getDelegate() Line 713	C#
     	icecs.dll!Ice.ObjectPrxHelperBase.ice_invoke(string operation = "callme", Ice.OperationMode mode = Idempotent, byte[] inParams = {Length=0}, byte[] outParams = {Length=0}, Ice.Context context = {Ice.Context}) Line 208 + 0x8 bytes	C#
     	icecs.dll!Ice.ObjectPrxHelperBase.ice_invoke(string operation = "callme", Ice.OperationMode mode = Idempotent, byte[] inParams = {Length=0}, byte[] outParams = {Length=0}) Line 197 + 0x39 bytes	C#
     	blizardmaster.dll!BlizardMaster.TopicI.invoke_subs(Blizard.Invocation data = {Blizard.Invocation}) Line 104 + 0x1d bytes	C#
    
    Am I hitting a deadlock here because both publisher and subscriber are in the same app ??
  • benoitbenoit Rennes, FranceAdministrators, ZeroC Staff Benoit FoucherOrganization: ZeroC, Inc.Project: Ice ZeroC Staff
    This is strange, I really doubt there's anything in Ice which could kill the calling thread :confused:. Can you perhaps provide a small compilable example that demonstrates the problem? Also, can you give more details on your environment (version of .NET or mono, Ice for C# version, platform, etc)?

    Thanks!

    Benoit.
  • benoitbenoit Rennes, FranceAdministrators, ZeroC Staff Benoit FoucherOrganization: ZeroC, Inc.Project: Ice ZeroC Staff
    Try to increase the server thread pool size by setting the Ice.ThreadPool.Server.Size property to a value larger than 1. I suspect your application is running out of threads (non collocated calls are dispatched by the server thread pool.)

    Hope this helps!

    Benoit.
  • KE5CRPKE5CRP Member
    ok -- upping the threads got me a little further along... it dispatched a couple of invocations (one of them apparently a retry after exception) which went all the way through to the implementation.. then popped an UnknownUserException in Incoming.invoke... in the finally clause where it tests locator/servant/status.... at that point>
    locator was undefined
    servent contained and instance of the implementation
    status was DispatchOK

    (doesnt look like that code should have thrown an exception.. should have just continued on to process the "void" return type of the method)

    VS.Net 2003 with IceCS-2.1.0 debug dll from source build
  • KE5CRPKE5CRP Member
    forget it and thanks so much for the help !!

    I had one of my methods in the routing code defaulting to return false which caused the ice_invoke on my publisher object to return false.. which made the runtime very unhappy :)

    looks to all be working now !!
Sign In or Register to comment.