Home Help Center

Can we acquire the ICE mutex explicitly to enforce ordering

gmhgmh Member Greg HughesOrganization: Hewlett-PackardProject: Remote Graphics Software

We have a legacy construct in our code from back in the day in ICE 2.x when there was a thread per connection instead of a threadpool. I don't know if that changed mutex behavior in ICE, or if we have always been exposed. We have a deadlock during unexpected disconnects. Incoming Ice invocations have an ICE lock and attempt to acquire a domain lock while a cleanup thread has the domain lock and attempts to make an outbound ICE invocation.

This code needs to be redesigned, however we're considering options for a low risk short term fix.

Is it possible to grab the ICE lock on our thread that makes the outbound invocation explicitly, such that we can acquire it before our domain lock to avoid the deadlock?

Answers

  • bernardbernard Jupiter, FLAdministrators, ZeroC Staff Bernard NormierOrganization: ZeroC, Inc.Project: Ice ZeroC Staff

    Hi Greg,

    Could you post or email us your stack trace with this deadlock, so that we can understand better the issue?

    Also, which version of Ice are you using? I assume it's Ice C++?

    Best regards,
    Bernard

  • gmhgmh Member Greg HughesOrganization: Hewlett-PackardProject: Remote Graphics Software

    Bernard, we are using 3.7.2+ ( for IceLiveSocket ) C++98 API. I'll send a stack trace to you and support in an email.

Sign In or Register to comment.