clab / clab/dynet

[swig-java] potential memory issue

Open
#1,502 14 comments 0 reactions 0 assignees View on GitHub
major bug
Dominant language
C++
Stars
3.4k
Forks
701
PR merge metrics
No merged PRs in 30d

Description

I was using the swig-java wrapper for the [DyNet](https://github.com/clab/dynet/tree/master/contrib/swig) package.

When I run the code, sometimes it can run, sometimes it crashed like below. For example, the first 2 to 3 times can be run smoothly. But the code crashes at the 4th run.

```
.#
# A fatal error has been detected by the Java Runtime Environment:
#
# SIGSEGV (0xb) at pc=0x0000006400000022, pid=28040, tid=12035
#
# JRE version: Java(TM) SE Runtime Environment (8.0_65-b17) (build 1.8.0_65-b17)
# Java VM: Java HotSpot(TM) 64-Bit Server VM (25.65-b01 mixed mode bsd-amd64 compressed oops)
# Problematic frame:
# C 0x0000006400000022
#
# Failed to write core dump. Core dumps have been disabled. To enable core dumping, try "ulimit -c unlimited" before starting Java again
#
# An error report file with more information is saved as:
# /Users/allanjie/Documents/workspace/statnlp-core-main/hs_err_pid28040.log
#
# If you would like to submit a bug report, please visit:
# http://bugreport.java.com/bugreport/crash.jsp
#
```

When I check the log, it seems this is related to the `delete()` function which is automatically generated by swig. I'm wondering what would be the potential issues causing such phenonmenon. Again, the program sometimes can run, sometimes not. I'm doubting there might be memory leak. But not sure how to fix it.
```
Register to memory mapping:

RAX=0x00007fd3a1f26678 is an unknown value
RBX={method} {0x0000000107ca6af8} 'delete_ParameterStorageBase' '(J)V' in 'edu/cmu/dynet/internal/dynet_swigJNI'
RCX=0x0000000102215310: UseMembar+0 in /Library/Java/JavaVirtualMachines/jdk1.8.0_65.jdk/Contents/Home/jre/lib/server/libjvm.dylib at 0x0000000101a00000
RDX=0x00007fd3a1e37030 is an unknown value
RSP=0x0000700004590618 is pointing into the stack for thread: 0x00007fd3a2011800
RBP=0x0000700004590670 is pointing into the stack for thread: 0x00007fd3a2011800
RSI=0x0000700004590680 is pointing into the stack for thread: 0x00007fd3a2011800
RDI=0x00007fd3a1e37030 is an unknown value
R8 =0x9e3779b97f4a7c55 is an unknown value
R9 =0x0000000000000005 is an unknown value
R10=0x0000000110aa3928 is at code_begin+808 in an Interpreter codelet
method entry point (kind = native) [0x0000000110aa3600, 0x0000000110aa3f00] 2304 bytes
R11=0x0000000101edc4cf: throw_unsatisfied_link_error+0 in /Library/Java/JavaVirtualMachines/jdk1.8.0_65.jdk/Contents/Home/jre/lib/server/libjvm.dylib at 0x0000000101a00000
R12=0x0000000000000000 is an unknown value
R13={method} {0x0000000107ca6af8} 'delete_ParameterStorageBase' '(J)V' in 'edu/cmu/dynet/internal/dynet_swigJNI'
R14=0x0000700004590698 is pointing into the stack for thread: 0x00007fd3a2011800
R15=0x00007fd3a2011800 is a thread

Stack: [0x0000700004491000,0x0000700004591000], sp=0x0000700004590618, free space=1021k
Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code)
C 0x0000006400000022
j edu.cmu.dynet.internal.ParameterStorageBase.delete()V+25
j edu.cmu.dynet.internal.ParameterStorage.delete()V+34
j edu.cmu.dynet.internal.ParameterStorage.finalize()V+1
j java.lang.System$2.invokeFinalize(Ljava/lang/Object;)V+1
j java.lang.ref.Finalizer.runFinalizer(Lsun/misc/JavaLangAccess;)V+46
j java.lang.ref.Finalizer.access$100(Ljava/lang/ref/Finalizer;Lsun/misc/JavaLangAccess;)V+2
j java.lang.ref.Finalizer$FinalizerThread.run()V+45
v ~StubRoutines::call_stub
V [libjvm.dylib+0x2eab02] JavaCalls::call_helper(JavaValue*, methodHandle*, JavaCallArguments*, Thread*)+0x6ae
V [libjvm.dylib+0x2eb290] JavaCalls::call_virtual(JavaValue*, KlassHandle, Symbol*, Symbol*, JavaCallArguments*, Thread*)+0x164
V [libjvm.dylib+0x2eb43c] JavaCalls::call_virtual(JavaValue*, Handle, KlassHandle, Symbol*, Symbol*, Thread*)+0x4a
V [libjvm.dylib+0x345959] thread_entry(JavaThread*, Thread*)+0x7c
V [libjvm.dylib+0x5612d3] JavaThread::thread_main_inner()+0x9b
V [libjvm.dylib+0x5629ce] JavaThread::run()+0x1c2
V [libjvm.dylib+0x48342e] java_start(Thread*)+0xf6
C [libsystem_pthread.dylib+0x3661] _pthread_body+0x154
C [libsystem_pthread.dylib+0x350d] _pthread_body+0x0
C [libsystem_pthread.dylib+0x2bf9] thread_start+0xd
C 0x0000000000000000

Java frames: (J=compiled Java code, j=interpreted, Vv=VM code)
j edu.cmu.dynet.internal.dynet_swigJNI.delete_ParameterStorageBase(J)V+0
j edu.cmu.dynet.internal.ParameterStorageBase.delete()V+25
j edu.cmu.dynet.internal.ParameterStorage.delete()V+34
j edu.cmu.dynet.internal.ParameterStorage.finalize()V+1
j java.lang.System$2.invokeFinalize(Ljava/lang/Object;)V+1
j java.lang.ref.Finalizer.runFinalizer(Lsun/misc/JavaLangAccess;)V+46
j java.lang.ref.Finalizer.access$100(Ljava/lang/ref/Finalizer;Lsun/misc/JavaLangAccess;)V+2
j java.lang.ref.Finalizer$FinalizerThread.run()V+45
v ~StubRoutines::call_stub

--------------- P R O C E S S ---------------
```

Contributor guide

No contributing guide indexed for this repository

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.