[8u] RFR: 8149548: slowdebug build crashes if -XX:+TraceBytecodes flag is used
Sergey Nazarkin
snazarkin at azul.com
Fri Feb 19 13:16:45 UTC 2016
Thank you, Ed. This fix was about SIGILL but you are right the line need to be swapped. I don’t know why we never get exception on JDK8
Sergey Nazarkin
> On 18 Feb 2016, at 20:12, Edward Nevill <edward.nevill at gmail.com> wrote:
>
> Hi Sergey,
>
> I was trying to forward port this patch to the jdk9 tree, but I get SEGVs on the slowdebug build even when just running 'java' on its own.
>
> The problem seems to be the following part of the patch
>
> // Load *adr into c_rarg1, may fault.
> *fault_pc = __ pc();
> + __ mov(c_rarg2, c_rarg0);
> switch (size) {
> case 4:
>
> The resultant code after patching looks like
>
> // Load *adr into c_rarg1, may fault.
> *fault_pc = __ pc();
> __ mov(c_rarg2, c_rarg0);
> switch (size) {
> case 4:
> // int32_t
> __ ldr(c_rarg0, Address(c_rarg2, 0));
> break;
>
> The problem seems to be that fault_pc is pointing to the mov c_rarg2, c_rarg0 rather than the actual instruction causing the fault.
>
> What I don't quite understand is why we don't see the fault on the jdk8u tree, only the jdk9 tree. Maybe jdk8u isn't calling safefetch?
>
> Anyway, if you agree that the correct fix is just to swap the lines I will push a patch.
>
> *fault_pc = __ pc();
> __ mov(c_rarg2, c_rarg0);
>
> to
>
> __ mov(c_rarg2, c_rarg0);
> *fault_pc = __ pc();
>
> Regards,
> Ed.
>
> On Wed, 2016-02-10 at 15:59 +0000, Sergey Nazarkin wrote:
>> Hi!
>>
>> Please review fix for JDK8 interpreter. The changeset covers several SIGILL and NPE generated by signal handler
>>
>> To reproduce call “java -XX:+TraceBytecodes -version”
>>
>> http://cr.openjdk.java.net/~snazarki/8149548/
>>
>> Sergey Nazarkin
>>
>>
>>
>>
>
>
More information about the aarch32-port-dev
mailing list