On 12/05, caiq...@redhat.com 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.

Reply via email to