[Neo4j] Neo4j.py OS X issues

Tobias Ivarsson tobias.ivarsson at neotechnology.com
Fri Aug 20 08:47:20 CEST 2010


For some strange reason I am unable to get the body of this message
through to the mailing list. I'm now giving up and including Dan
directly as a recipient so that at least he gets a response.

On Fri, Aug 20, 2010 at 8:45 AM, Tobias Ivarsson
<tobias.ivarsson at neotechnology.com> wrote:
> Hi Dan,
>
> From the segfault thread dump it looks like you are running at least 2
> Python threads, is that correct? (Thread 0, and Thread 21)
>
> From the numbering of the threads I'm guessing Thread 0 is the thread
> that started the JVM (and Neo4j), and Thread 21 is the one that is
> shutting down Neo4j. Has Thread 21 opened any transactions with Neo4j
> before attempting to shut down Neo4j?
>
> When embedding a JVM through JNI (which is what JPype does) all
> operating system threads that are not started by the JVM needs to
> register with the JVM in order to be able to invoke any JVM methods.
> JPype does not do this automatically, instead it provides functions
> for the developer (me or you) to do this. I've added a check for new
> threads, and registrations thereof, in the function that opens a new
> transaction. This means that after opening a transaction (possibly
> closing it right away) a new thread should be able to utilize the
> Neo4j objects. If trying to interact with Neo4j without ever opening a
> transaction before doing so, any new thread could cause severe
> problems (of an undocumented kind. This usually means segfault).
>
> This is a bit of a wart, and I can't say with a 100% confidence that
> this is what has happened to you, but it's a theory, and now that it's
> presented to you, my hope is that you can be confident whether or not
> this applies to your code.
> Let me know if this was any help.
>
> Cheers,
> Tobias
>
> On Wed, Aug 18, 2010 at 10:55 PM, Dan Gould <dlg at dangould.com> wrote:
>>
>> Hi,
>>
>> I'm experimenting with Neo4j.py.  I want to completely clear my DB
>> between tests in my test framework, which I do with shutdown(), remove
>> the db dir, and restart (I've had problems removing all nodes; I'll
>> discuss in a separate thread on the list once I put together a simple test).
>>
>> When I call shutdown() on the Graph Database, I get a Segmentation Fault.
>>
>> I want to be able to shut down safely, so I was wondering if there is a fix.
>>
>> I'm running with:
>> - Neo4j.py (tried a few versions, including last night's svn HEAD; I
>> also tried changing pom.xml to use Neo4j 1.1)
>> - CPython: Python 2.6.5 (r265:79063, May 17 2010, 14:26:12)  [GCC 4.2.1
>> (Apple Inc. build 5646)] on darwin
>> - I have both JPype-0.5.4.1 and JCC-2.6 installed in my virtualenv (I
>> also tried with only JPype installed)
>> - OS X 10.6.3
>> - Java Version "1.6.0_20"; Java(TM) SE Runtime Environment (build
>> 1.6.0_20-b02-279-10M3065); Java HotSpot(TM) 64-Bit Server VM (build
>> 16.3-b01-279, mixed mode)
>>
>> (I can also get a segfault if writing outside a transaction.)
>>
> ---8<--- <cut out long stack trace/> ---8<---
> --
> Tobias Ivarsson <tobias.ivarsson at neotechnology.com>
> Hacker, Neo Technology
> www.neotechnology.com
> Cellphone: +46 706 534857
>



-- 
Tobias Ivarsson <tobias.ivarsson at neotechnology.com>
Hacker, Neo Technology
www.neotechnology.com
Cellphone: +46 706 534857


More information about the User mailing list