RFR: JDK-8157141 & JDK-8166454: Solaris getisax(2) and meminfo(2) cleanup

David Holmes david.holmes at oracle.com
Mon Sep 26 23:54:26 UTC 2016


Thanks Alan. It is the creation of the intermediate log-stream that can 
not be accomplished at this stage of VM initialization so we will need 
to stick with what you had. Thanks for trying.

David

On 27/09/2016 7:56 AM, Alan Burlison wrote:
> On 26/09/16 21:49, David Holmes wrote:
>
>>> #  Internal Error
>>> (/opt/jprt/T/P1/093524.alanbur/s/hotspot/src/share/vm/runtime/thread.hpp:662),
>>>
>>>
>>> pid=51406, tid=2
>>> #  assert(current != 0L) failed: Thread::current() called on detached
>>> thread
>>
>> Can you send me the stacktrace please. Both forms of the code should be
>> using the same underlying UL code, so both should either fail or work.
>
> core 'core' of 29465:   ./java -Xlog:os+cpu -version
> ------------  lwp# 1 / thread# 1  ---------------
>  ffffffff7ed4c320 __lwp_wait (0, ffffffff7fffe77c, 0, 2,
> ffffffff7f402a40, 0) + 8
>  ffffffff7ed43360 _thrp_join (2, 0, ffffffff7fffe8e0, 1, 0,
> ffffffff7fffe8ec) + 3c
>  ffffffff7ed434cc thr_join (2, 0, ffffffff7fffe8e0, ffffffff7fffe9a0, 0,
> 3) + 14
>  ffffffff6100d190 ContinueInNewThread0 (ffffffff61006b30, 100000,
> ffffffff7fffe9a0, fffffffffffffff8, ffffffff60d81aa8, 100000) + 30
>  ffffffff6100b1b4 ContinueInNewThread (109000, 100000, ffffffff5fe5c1b0,
> ffffffff5fe5b9b0, 0, ffffffff5fe5c180) + 94
>  ffffffff6100d21c JVMInit (ffffffff7fffebc8, 0, 2, 1001015d8, 0, 0) + 2c
>  ffffffff61006b10 JLI_Launch (ffffffff7ffff820, ffffffff61003df8, 1, 0,
> 0, 100101500) + 2b0
>  0000000100000ec0 main (100000, ffffffff7ffff9f0, 400, ffffffff7f400140,
> 100000be8, 100101500) + 160
>  0000000100000d28 _start (0, 0, 0, 0, 0, 100100ef0) + 108
> ------------  lwp# 2 / thread# 2  ---------------
>  ffffffff7ed4c2f0 __lwp_sigqueue (6, ffffffff7e2fcab0, 5, 5, 0, 0) + 8
>  ffffffff7eccab54 abort (1, ff8, 6, 0, 1bb5b4, c00) + 10c
>  ffffffff607c64a4 void os::abort(bool,void*,const void*) (32,
> ffffffff5f1b7b5a, ffffffff60e47e00, 0, ffffffff7e2fcc60, 0) + 1a4
>  ffffffff60bbce24 void VMError::report_and_die(int,const char*,const
> char*,void*,Thread*,unsigned char*,void*,void*,const char*,int,unsigned
> long) (1, 1, d9bec, e0000000, 1, ffffffff60e13ba5) + 17f4
>  ffffffff60bbb5b4 void VMError::report_and_die(Thread*,const
> char*,int,const char*,const char*,void*) (0, ffffffff5ef7d278, 14a,
> ffffffff5ef7d598, ffffffff5ef7d570, ffffffff7e2fd1c0) + 34
>  ffffffff5f99ff30 void report_vm_error(const char*,int,const char*,const
> char*,...) (ffffffff5ef7d278, 14a, ffffffff5ef7d598, ffffffff5ef7d570,
> 0, ffffffff60e13b4c) + 70
>  ffffffff5fa98f14 void frame::init(long*,unsigned char*,CodeBlob*)
> (ffffffff7e2fd2b0, ffffffff7e2fcae1, ffffffff607d75e0, 0, 0, 0) + 54
>  ffffffff607d7624 frame os::current_frame() (ffffffff7e2fde20, 16a0a8,
> ffffffff60f0caa8, 16a000, ffffffff60d81aa8, 18b000) + 44
>  ffffffff60bb9bd8 void VMError::report(outputStream*,bool)
> (ffffffff60f0d2d0, 1, 22f, ffffffff60f0caa0, ffffffff5f2bf678,
> ffffffff60f0caa0) + 1348
>  ffffffff60bbc0d0 void VMError::report_and_die(int,const char*,const
> char*,void*,Thread*,unsigned char*,void*,void*,const char*,int,unsigned
> long) (ffffffff60f0d7b7, ffffffff60f0d768, 1, fffffffffe53e6c8, 4, 0) + aa0
>  ffffffff60bbb5b4 void VMError::report_and_die(Thread*,const
> char*,int,const char*,const char*,void*) (0, ffffffff5ef7d278, 14a,
> ffffffff5ef7d598, ffffffff5ef7d570, ffffffff7e2fe3b0) + 34
>  ffffffff5f99ff30 void report_vm_error(const char*,int,const char*,const
> char*,...) (ffffffff5ef7d278, 14a, ffffffff5ef7d598, ffffffff5ef7d570,
> 0, ffffffff60e13b4c) + 70
>  ffffffff5fa98f14 void frame::init(long*,unsigned char*,CodeBlob*)
> (ffffffff7e2fe4a0, ffffffff7e2fdcd1, ffffffff607d75e0, 0, 0, 0) + 54
>  ffffffff607d7624 frame os::current_frame() (ffffffff7e2ff040, 16a0a8,
> ffffffff7e200000, 16a000, ffffffff60d81aa8, 100000) + 44
>  ffffffff60bb9b38 void VMError::report(outputStream*,bool)
> (ffffffff60f0d2d0, 1, 0, ffffffff7e300000, ffffffff5f2bf678,
> ffffffff60f0caa0) + 12a8
>  ffffffff60bbc0d0 void VMError::report_and_die(int,const char*,const
> char*,void*,Thread*,unsigned char*,void*,void*,const char*,int,unsigned
> long) (ffffffff60e47e00, 18b828, 18bcc0, ffffffff607dcc60, 4,
> ffffffff60e47e00) + aa0
>  ffffffff60bbb5b4 void VMError::report_and_die(Thread*,const
> char*,int,const char*,const char*,void*) (0, ffffffff5ed792c8, 296,
> ffffffff5ed79310, ffffffff5ed79298, ffffffff7e2ff5a0) + 34
>  ffffffff5f99ff30 void report_vm_error(const char*,int,const char*,const
> char*,...) (ffffffff5ed792c8, 296, ffffffff5ed79310, ffffffff5ed79298,
> ffffffff7e100240, ffffffff60e13b4c) + 70
>  ffffffff5f3505c4 Thread*Thread::current() (0, 8, 0, ffffffff60d81aa8,
> 0, 0) + 64
>  ffffffff6091f190 char*resource_allocate_bytes(unsigned
> long,AllocFailStrategy::AllocFailEnum) (c8, 0, 3ffe8df0, 0, 19f85c,
> ff0000) + 10
>  ffffffff6055ca18
> outputStream*create_log_stream(LogLevel::type,LogTagSet*) (3,
> ffffffff60f12130, ffffffff7ee87260, ffffffff7ee86000, 3ffe8df0,
> ffffffff60d81aa8) + 18
>  ffffffff60c0c8e0 int VM_Version::platform_features(int) (2f, 6, c6000,
> ffffffff5f2e97e8, ffffffff60d81aa8, 73) + 1e0
>  ffffffff60c0f82c int VM_Version::determine_features() (16000, 18000,
> 1fff, ffffffff60d81aa8, 0, 4000) + 5c
>  ffffffff607b1160 void os::init_before_ergo() (16, ffffffff60e146f8,
> ffffffff60d81aa8, 92c50, 1000, 2000) + d0
>  ffffffff60b060a8 int Threads::create_vm(JavaVMInitArgs*,bool*)
> (ffffffff7e2ffe58, ffffffff7e2ffd9b, 0, a9c00, 0, ffffffff60d81aa8) + a8
>  ffffffff5fe5bbc0 int JNI_CreateJavaVM_inner(JavaVM_**,void**,void*)
> (ffffffff7e2fff30, ffffffff7e2fff28, ffffffff7e2ffe58, c00, 10b400,
> ffffffff60d81aa8) + 100
>  ffffffff61009358 InitializeJVM (ffffffff7e2fff30, ffffffff7e2fff28,
> ffffffff5fe5c180, ffffffff7ee8f8cc, ffffffff7e100240, 0) + f8
>  ffffffff61006b84 JavaMain (ffffffff7fffe9a0, ffffffff5fe5b9b0,
> ffffffff5fe5c180, ffffffff61006b30, 0, 1) + 54
>  ffffffff7ed47328 _lwp_start (0, 0, 0, 0, 0, 0)
>
>>> Is there a variant of this block of logging code that will work under
>>> those circumstances?
>>
>> If we try to use UL too early we simply have to not use UL for that
>> logging.
>
> Well, the previous logging code worked so in principle it shouldn't be
> too early...
>


More information about the hotspot-runtime-dev mailing list