|
View:
New views
3 Messages
—
Rating Filter:
Alert me
|
|
|
reading thread nameHi,
I am modifying the CPP Interpreter such that the InterpreterRuntime function below gets invoked on each Java bytecode method call: IRT_ENTRY(void, InterpreterRuntime::CCT_update(JavaThread *thread, int type)) static methodOop current = NULL; // calling method static int bci = -1; // call-site // ignore non-java threads if (!thread->is_Java_thread()) return; // ignore non-named threads if (strcmp(thread->name(), "Unknown Thread") == 0) return; ... The funtion should return, if the name of the thread is "Unknown Thread". This works fine for a simple HelloWorld program, but when I try one of DaCapo benchmarks the execution fails with the following error: # # A fatal error has been detected by the Java Runtime Environment: # # java.lang.OutOfMemoryError: requested 32756 bytes for ChunkPool::allocate. Out of swap space? # # Internal Error (allocation.cpp:117), pid=27659, tid=3084180368 # Error: ChunkPool::allocate # # Java VM: OpenJDK Server VM (13.0-b02 interpreted mode linux-x86 ) # An error report file with more information is saved as: # /home/nagy/research/hotspot/test/hs_err_pid27659.log # # If you would like to submit a bug report, please visit: # http://java.sun.com/webapps/bugreport/crash.jsp # Aborted After trying to debug the code, I found that the problem is with the call to thread->name(). When I remove it, the execution terminates successfully. It seems that successive calls to thread->name() induces some sort of memory leakage. Is this a bug in hotspot or is there something I am missing here ? thanks, - nagy |
|
|
Re: reading thread nameHi Nagy,
you can try to put a ResourceMark in the block where you use "thread->name()" like so: ... ResourceMark rm; // ignore non-named threads if (strcmp(thread->name(), "Unknown Thread") == 0) return; ... A resource mark releases all resources allocated after it was constructed when the destructor is called and thread->name() somwhere calls UNICODE::as_utf8 which allocates memory in the thread-local resource area. Regards, Volker On 7/11/08, Nagy1981 <nagy.mostafa@...> wrote: > > Hi, > I am modifying the CPP Interpreter such that the InterpreterRuntime function > below gets invoked on each Java bytecode method call: > > IRT_ENTRY(void, InterpreterRuntime::CCT_update(JavaThread *thread, int > type)) > > static methodOop current = NULL; // calling method > > static int bci = -1; // call-site > > > // ignore non-java threads > if (!thread->is_Java_thread()) > return; > > // ignore non-named threads > if (strcmp(thread->name(), "Unknown Thread") == 0) > return; > ... > > The funtion should return, if the name of the thread is "Unknown Thread". > This works fine for a simple HelloWorld program, but when I try one of > DaCapo benchmarks the execution fails with the following error: > > # > # A fatal error has been detected by the Java Runtime Environment: > # > # java.lang.OutOfMemoryError: requested 32756 bytes for ChunkPool::allocate. > Out of swap space? > # > # Internal Error (allocation.cpp:117), pid=27659, tid=3084180368 > # Error: ChunkPool::allocate > # > # Java VM: OpenJDK Server VM (13.0-b02 interpreted mode linux-x86 ) > # An error report file with more information is saved as: > # /home/nagy/research/hotspot/test/hs_err_pid27659.log > # > # If you would like to submit a bug report, please visit: > # http://java.sun.com/webapps/bugreport/crash.jsp > # > Aborted > > After trying to debug the code, I found that the problem is with the call to > thread->name(). When I remove it, the execution terminates successfully. It > seems that successive calls to thread->name() induces some sort of memory > leakage. Is this a bug in hotspot or is there something I am missing here ? > > thanks, > - nagy > > > > > -- > View this message in context: http://www.nabble.com/reading-thread-name-tp18394454p18394454.html > Sent from the OpenJDK Hotspot Compiler Development List mailing list archive at Nabble.com. > > |
|
|
Re: reading thread nameYes, that did the trick. Thanks Volker, I wouldn't have guessed that :)
Also at looking at my code snippet, I have static variables. Is that thread-safe ? In other words are the calls to InterpreterRuntime synchronized, or do I have to do that manually ? - nagy Volker Simonis wrote: > Hi Nagy, > > you can try to put a ResourceMark in the block where you use > "thread->name()" like so: > > ... > ResourceMark rm; > // ignore non-named threads > if (strcmp(thread->name(), "Unknown Thread") == 0) > return; > ... > > A resource mark releases all resources allocated after it was > constructed when the destructor is called and thread->name() somwhere > calls UNICODE::as_utf8 which allocates memory in the thread-local > resource area. > > Regards, > Volker > > On 7/11/08, Nagy1981 <nagy.mostafa@...> wrote: > >> Hi, >> I am modifying the CPP Interpreter such that the InterpreterRuntime function >> below gets invoked on each Java bytecode method call: >> >> IRT_ENTRY(void, InterpreterRuntime::CCT_update(JavaThread *thread, int >> type)) >> >> static methodOop current = NULL; // calling method >> >> static int bci = -1; // call-site >> >> >> // ignore non-java threads >> if (!thread->is_Java_thread()) >> return; >> >> // ignore non-named threads >> if (strcmp(thread->name(), "Unknown Thread") == 0) >> return; >> ... >> >> The funtion should return, if the name of the thread is "Unknown Thread". >> This works fine for a simple HelloWorld program, but when I try one of >> DaCapo benchmarks the execution fails with the following error: >> >> # >> # A fatal error has been detected by the Java Runtime Environment: >> # >> # java.lang.OutOfMemoryError: requested 32756 bytes for ChunkPool::allocate. >> Out of swap space? >> # >> # Internal Error (allocation.cpp:117), pid=27659, tid=3084180368 >> # Error: ChunkPool::allocate >> # >> # Java VM: OpenJDK Server VM (13.0-b02 interpreted mode linux-x86 ) >> # An error report file with more information is saved as: >> # /home/nagy/research/hotspot/test/hs_err_pid27659.log >> # >> # If you would like to submit a bug report, please visit: >> # http://java.sun.com/webapps/bugreport/crash.jsp >> # >> Aborted >> >> After trying to debug the code, I found that the problem is with the call to >> thread->name(). When I remove it, the execution terminates successfully. It >> seems that successive calls to thread->name() induces some sort of memory >> leakage. Is this a bug in hotspot or is there something I am missing here ? >> >> thanks, >> - nagy >> >> >> >> >> -- >> View this message in context: http://www.nabble.com/reading-thread-name-tp18394454p18394454.html >> Sent from the OpenJDK Hotspot Compiler Development List mailing list archive at Nabble.com. >> >> >> > > |
| Free embeddable forum powered by Nabble | Forum Help |