Hi everyone!

Just wanted to say I really like neo4j so far and what it's capable of.
It's helping to solve a lot of data modeling problems that were impossible
to handle in a RDBMS system.  I'm using it with the Python bindings which
are mostly intuitive so far, but I've been having an odd issue crop up.
Despite the fact that it's a segmentation fault (I'll print the logs below),
it's not a show stopper because it only occurs on shutting down the Pylons
server (Paste Script 1.7.1) and does not crash the system.  Here are the
relevant pieces of the log:

#
# A fatal error has been detected by the Java Runtime Environment:
#
#  SIGSEGV (0xb) at pc=0x08dae990, pid=16123, tid=3085936320
#
# JRE version: 6.0_20-b02
# Java VM: Java HotSpot(TM) Client VM (16.3-b01 mixed mode linux-x86 )
# Problematic frame:
# C  [_jpype.so+0x3b990]  _ZN9JPJavaEnv11NewLocalRefEP8_jobject+0x20
#
# If you would like to submit a bug report, please visit:
#   http://java.sun.com/webapps/bugreport/crash.jsp
#

Stack: [0xbff41000,0xbff91000],  sp=0xbff8f980,  free space=13abff8f310k
Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native
code)
C  [_jpype.so+0x3b990]  _ZN9JPJavaEnv11NewLocalRefEP8_jobject+0x20
C  [_jpype.so+0x522a1]
_ZN16JPMethodOverload14invokeInstanceERSt6vectorIP7HostRefSaIS2_EE+0x1c1
C  [_jpype.so+0x61c1c]
_ZN8JPMethod6invokeERSt6vectorIP7HostRefSaIS2_EE+0x5c
C  [_jpype.so+0x6bb73]  _ZN15PyJPBoundMethod8__call__EP7_objectS1_S1_+0x313
C  [libpython2.6.so.1.0+0x2704c]  PyObject_Call+0x5c
C  [libpython2.6.so.1.0+0xc1118]  PyEval_EvalFrameEx+0x10d8
C  [libpython2.6.so.1.0+0xc7ada]  PyEval_EvalCodeEx+0x8ba
C  [libpython2.6.so.1.0+0xc5b24]  PyEval_EvalFrameEx+0x5ae4
C  [libpython2.6.so.1.0+0xc7ada]  PyEval_EvalCodeEx+0x8ba
C  [libpython2.6.so.1.0+0x54659]
C  [libpython2.6.so.1.0+0x2704c]  PyObject_Call+0x5c
C  [libpython2.6.so.1.0+0xc0da8]  PyEval_EvalFrameEx+0xd68
C  [libpython2.6.so.1.0+0xc7ada]  PyEval_EvalCodeEx+0x8ba
C  [libpython2.6.so.1.0+0x5456a]
C  [libpython2.6.so.1.0+0x2704c]  PyObject_Call+0x5c
C  [libpython2.6.so.1.0+0xbf304]  PyEval_CallObjectWithKeywords+0x54
C  [libpython2.6.so.1.0+0xea113]  Py_Finalize+0xd3
C  [libpython2.6.so.1.0+0xf7a64]  Py_Main+0x4d4
C  [python2.6+0x592]  main+0x32
C  [libc.so.6+0x15e9c]  __libc_start_main+0xdc

I am almost positive this is a thread issue.  By default, the Pylons HTTP
server starts up with a thread pool of 10 workers.  These are POSIX threads,
which JPype should handle OK.  However, my best guess is in the shutdown
process Pylons is killing the threads before the JVM is finished executing
whatever code is going on in them, maybe some shutdown routines or
something.  Also, Pylons comes with a web-based debugger, which is
essentially a web-based interface to the standard Python debugger.
Attempting to use it for any code using the neo4j bindings causes an
immediate segfault, probably because the debugger traces up and down the
stack and is running into similar thread issues.

Is there a way to ensure the threads detach from the JVM before dying or
something similar to avoid this problem?  Right now it is more annoying than
anything because it fills up the project's main directory with logs (we are
in active development and do a lot of server startup/shutdown) and makes
debugging harder.  It probably would not affect production stability when we
reach that stage because it is only happening while debugging or shutting
down the server, but it is never good to release a project with a known
segfault issue.

Best,
Aaron
_______________________________________________
Neo4j mailing list
[email protected]
https://lists.neo4j.org/mailman/listinfo/user

Reply via email to