[omniORB] omniORBpy lock-up

Eric C. Newton ecn@metaslash.com
Sun, 8 Jul 2001 17:19:13 -0400


Platform:

    omniORBpy 1.4 (pre-built)
    Python 2.1
    WindowsME
    PIII/750

I've had a problem with the following code in

        omni/src/lib/omniORBpy/python/omniORB/__init__.py

on or about line 673:

    def delete(self):
        if self.add:
            for hook in self.hooks:
                hook(WTHREAD_DELETED, self)
            _thr_acq()
            del _thr_act[self.id]
            _thr_rel()

Sometimes there's a KeyError exception between the thr_acq and the
thr_rel.  Shortly after this occurs, my server locks up because the
lock is never released.

I changed the code to:

    def delete(self):
        if self.add:
            for hook in self.hooks:
                hook(WTHREAD_DELETED, self)
            try:
                try:
                    _thr_acq()
                    del _thr_act[self.id]
                finally:
                    _thr_rel()
            except:
                import traceback
                traceback.print_exc()
                raise

This only releases the lock and prints the error.  I'm not really sure
what's going on.  Never happens under Linux (RedHat 7.1) on the same
machine, but happens frequently on WindowsME.

-Eric