Legacy bug: JVM crashes with SIGSEGV when multiple threads call connect() simultaneously. The race condition occurs between jpype.isJVMStarted() check and jpype.startJVM() call — two threads can both see JVM as not started and both attempt to start it.
Root cause: No thread-safety mechanism around JVM startup in _jdbc_connect_jpype(). The check-then-act pattern (if not isJVMStarted(): startJVM()) is not atomic.
Expected in jaydebeapiarrow: Add a threading lock around JVM startup to prevent concurrent startJVM() calls. Document that parallel connections are safe.
Legacy Reference
baztian/jaydebeapi#158
Verification of Legacy Issue baztian/jaydebeapi#158
Legacy bug: JVM crashes with SIGSEGV when multiple threads call
connect()simultaneously. The race condition occurs betweenjpype.isJVMStarted()check andjpype.startJVM()call — two threads can both see JVM as not started and both attempt to start it.Root cause: No thread-safety mechanism around JVM startup in
_jdbc_connect_jpype(). The check-then-act pattern (if not isJVMStarted(): startJVM()) is not atomic.Expected in jaydebeapiarrow: Add a threading lock around JVM startup to prevent concurrent
startJVM()calls. Document that parallel connections are safe.Legacy Reference
baztian/jaydebeapi#158