You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
in some situations during global destruction, FFI::Platypus can dlclose libzmq before Socket/Context DEMOLISH routines have run... so when they do actually run they try to make ffi calls on a library that's no longer loaded leading to... kaboom.
this can (hopefully) be worked around by doing the FFI::Platypus attach equivlant of the FFI::Raw::Ptr trick of overriding the package DESTROY with a real underlying ffi destroy function:
This reverts commit e595d7d.
The EV version 3 thing (GH #17) turned out to be a red herring. The
segfault really has to do with race conditions during global
destruction.. for some reason using EV 3 just happens to trigger the
perfect storm of fail during global destruction.
So switch back to using condvar in the test and remove the EV 4 version
kludge (which doesn't fix the underlying issue anyways).
The more general segfault issue is now tracked in GH #19.
Unfortunately it doesn't look like setting *DESTROY to the native cleanup routines directly will fix all the race conditions during global destruction that result in the segfault. Either ffi calls need to be avoided completely in the object destructors during global destruction, or an upstream change to FFI::Platypus needs to be made.
in some situations during global destruction, FFI::Platypus can dlclose libzmq before Socket/Context DEMOLISH routines have run... so when they do actually run they try to make ffi calls on a library that's no longer loaded leading to... kaboom.
this can (hopefully) be worked around by doing the FFI::Platypus
attach
equivlant of the FFI::Raw::Ptr trick of overriding the package DESTROY with a real underlying ffi destroy function:The text was updated successfully, but these errors were encountered: