6953477: review request for portability improvements to Hotspot
David Holmes
David.Holmes at oracle.com
Mon Aug 2 16:57:01 PDT 2010
Tom Rodriguez said the following on 08/03/10 06:45:
> On Jul 29, 2010, at 7:36 PM, David Holmes wrote:
>> Tom Rodriguez said the following on 07/30/10 03:18:
>>> You should make equivalent changes in os_windows_x86.cpp too.
>> Ideally yes, but at the time, as now, I had no access to Windows boxes for building or testing this.
>
> jprt always builds windows and I'm not sure how much testing this needs. The print_location code itself is platform dependent and as long as the code compiles it seems like it should work.
Building via jprt is hardly an effective development process.
>> Registers:
>> r0 = 0x000b0c00
>> r1 = 0x00006b70
>> r2 = 0x00000000
>> r3 = 0x00000064
>> r4 = 0x00000000
>> r5 = 0x000b0c00
>> r6 = 0x000b0c00
>> r7 = 0x00021400
>> r8 = 0x00020638
>> r9 = 0x4a650c58
>> r10 = 0x00000000
>> fp = 0x406fcad4
>> r12 = 0x00000001
>> sp = 0x406fca58
>> lr = 0x403e1768
>> pc = 0x40480278
>>
>>
>> Register to memory mapping:
>> r0 = 0x000b0c00
>> "Thread-2" prio=10 tid=0x000b0c00 nid=0x7da1 initialized [0x00000000]
>> java.lang.Thread.State: RUNNABLE
>
> This is pretty verbose since we print the register values twice.
> Why not just print them once by losing the first section?
Because it is entirely possible that attempting to print some
information about a register value will induce a secondary crash. This
way you at least get the original set of crash registers reported.
I use a newline to start the printing because I don't know how the
individual print routines will format things. The current approach
should at least make it clear where the boundaries are.
David
-----
The lack of indenting makes it less readable too though that's harder
to fix without modifing every print_on routines which I'm not sure we
want to do. Maybe the printing should just start on the same line
instead of having a cr in between. Printing nothing for unknown values
might make sense too.
>
> tom
>
>> r1 = 0x00006b70
>> 0x00006b70 is pointing to unknown location
>> r2 = 0x00000000
>> 0x00000000 is pointing to unknown location
>> r3 = 0x00000064
>> 0x00000064 is pointing to unknown location
>> r4 = 0x00000000
>> 0x00000000 is pointing to unknown location
>> r5 = 0x000b0c00
>> "Thread-2" prio=10 tid=0x000b0c00 nid=0x7da1 initialized [0x00000000]
>> java.lang.Thread.State: RUNNABLE
>> r6 = 0x000b0c00
>> "Thread-2" prio=10 tid=0x000b0c00 nid=0x7da1 initialized [0x00000000]
>> java.lang.Thread.State: RUNNABLE
>> r7 = 0x00021400
>> "main" prio=10 tid=0x00021400 nid=0x6d8d runnable [0x406fc000]
>> java.lang.Thread.State: RUNNABLE
>> r8 = 0x00020638
>> 0x00020638 is pointing to unknown location
>> r9 = 0x4a650c58
>> {method}
>> - klass: {other class}
>> r10 = 0x00000000
>> 0x00000000 is pointing to unknown location
>> fp = 0x406fcad4
>> 0x406fcad4 is pointing into the stack for thread: 0x00021400
>> "main" prio=10 tid=0x00021400 nid=0x6d8d runnable [0x406fc000]
>> java.lang.Thread.State: RUNNABLE
>> r12 = 0x00000001
>> 0x00000001 is pointing to unknown location
>> sp = 0x406fca58
>> 0x406fca58 is pointing into the stack for thread: 0x00021400
>> "main" prio=10 tid=0x00021400 nid=0x6d8d runnable [0x406fc000]
>> java.lang.Thread.State: RUNNABLE
>> lr = 0x403e1768
>> 0x403e1768: JVM_StartThread+0xe8 in /java/embedded/users/dh198349/1.6.0_18/builds/b06/linux-armv5-eabi-sflt-full-dev/j2sdk-image/jre/lib/arm/client/libjvm.so at 0x40191000
>> pc = 0x40480278
>> 0x40480278: <offset 0x2ef278> in /java/embedded/users/dh198349/1.6.0_18/builds/b06/linux-armv5-eabi-sflt-full-dev/j2sdk-image/jre/lib/arm/client/libjvm.so at 0x40191000
>
More information about the hotspot-dev
mailing list