On 12/05, [email protected] wrote:
>
> > Yes, it looks good so far. Ptrace tests also does not show any
> > regression.
>
> I said this too early. Looks like step-jump-count started to fail now.
>
> step-jump-cont: step-jump-cont.c:244: main: Assertion `0' failed.
> /bin/sh: line 5: 28212 Aborted ${dir}$tst
> FAIL: step-jump-cont
Could you please confirm that if you revert this
[PATCH] utrace: don't set ->ops = utrace_detached_ops lockless
change the kernel passes the test? This is just impossible that this
patch could make any difference for this test-case.
> You can login the same machine.
Yes, thanks.
Unfortunately, I can't extend the reservation.
# extendtesttime.sh
...
Extending reservation time 48
Unable to connect to server, sleeping 5 seconds...
and so on
I give up for today. Yes, the test-case fails. It gets SIGSEGV right
after we change the instruction pointer to raise_sigusr2.
I added printf("%p\n", raise_sigusr2) to print this address, and then
disassemled the code under this address:
(gdb) disassemble 0x100118c0
Dump of assembler code for function raise_sigusr2:
0x00000000100118c0 <raise_sigusr2+0>: .long 0x0 <----
SIGSEGV
0x00000000100118c4 <raise_sigusr2+4>: .long 0x10000ab0
0x00000000100118c8 <raise_sigusr2+8>: .long 0x0
0x00000000100118cc <raise_sigusr2+12>: vmulosh v0,v1,v19
0x00000000100118d0 <main+0>: .long 0x0
0x00000000100118d4 <main+4>: vmhaddshs v0,v0,v1,v12
0x00000000100118d8 <main+8>: .long 0x0
...
Hmm... this doesn't look like raise_sigusr2(), so I did
(gdb) disassemble raise_sigusr2
Dump of assembler code for function raise_sigusr2:
0x0000000010000ab0 <raise_sigusr2+0>: mflr r0
0x0000000010000ab4 <raise_sigusr2+4>: li r3,12
0x0000000010000ab8 <raise_sigusr2+8>: std r0,16(r1)
0x0000000010000abc <raise_sigusr2+12>: stdu r1,-112(r1)
0x0000000010000ac0 <raise_sigusr2+16>: bl 0x10000780
0x0000000010000ac4 <raise_sigusr2+20>: ld r2,40(r1)
0x0000000010000ac8 <raise_sigusr2+24>: cmpdi cr7,r3,0
looks like ppc uses some form of "thunks" for function pointers...
Another oddity, the comment says
/* PTRACE_GETREGS / PTRACE_SETREGS are not available on ppc.
#ifdef PTRACE_GETREGS
However, PTRACE_GETREGS is defined, and the testcase does use PTRACE_GETREGS.
Perhaps we have some issues with libc or compiler...
Did you change anything else (except kernel) on this machine?
Oleg.