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

Alan Burlison Alan.Burlison at oracle.com
Mon Sep 26 21:56:50 UTC 2016


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...

-- 
Alan Burlison
--


More information about the hotspot-runtime-dev mailing list