reading thread name

Nagy Mostafa nagy.mostafa at gmail.com
Fri Jul 11 08:23:10 PDT 2008


Yes, 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 at gmail.com> 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.
>>
>>
>>     
>
>   




More information about the hotspot-compiler-dev mailing list