Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 31 Oct 2016 06:32:39 +0000
From:      bugzilla-noreply@freebsd.org
To:        freebsd-arm@FreeBSD.org
Subject:   [Bug 213937] stable/11 -r307797 on BPi-M3 (cortex-a7): ktrace misreports bad svc (SIGSYS) number
Message-ID:  <bug-213937-7@https.bugs.freebsd.org/bugzilla/>

next in thread | raw e-mail | index | archive | help
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=3D213937

            Bug ID: 213937
           Summary: stable/11 -r307797 on BPi-M3 (cortex-a7): ktrace
                    misreports bad svc (SIGSYS) number
           Product: Base System
           Version: 11.0-STABLE
          Hardware: Any
                OS: Any
            Status: New
          Severity: Affects Only Me
          Priority: ---
         Component: arm
          Assignee: freebsd-arm@FreeBSD.org
          Reporter: markmi@dsl-only.net

A separately reported stable/11 -r307797 clang 3.8.0 code generation error =
for
armv6/cortex-a7 in bootstrapping lang/gcc6's xgcc's cc1 leads to the cc1
process sometimes executing:

0xbfbf6d20 in ?? ()
1: x/i $pc  0xbfbf6d20: svclt   0x00bf6ef0

(0xbfbf6d20 is a stack address before the problem occurs).

But the ktrace for this does not report the 24 bit value from that instruct=
ion
as the syscall number. It instead reports (from an example):

34629 cc1      CALL  [-17504]
34629 cc1      RET   [-17504] -1 errno 78 Function not implemented
34629 cc1      PSIG  SIGSYS SIG_DFL code=3DSI_KERNEL

-17504 =3D=3D 0xff...fBBA0 (2's complement)

truss has eventual crash problems for handling this svclt in the cc1 process
but via gdb on truss there is:

(gdb) print t->cs.number
$5 =3D 580828064

FYI: 580828064 =3D 0x229EBBA0
which partially matches -17504's binary pattern.

It turns out that just prior page fault activity has addresses with the 0x2=
29e
part of the above:

34629 cc1      CALL=20
mmap(0,0x4000,0x3<PROT_READ|PROT_WRITE>,0x1002<MAP_PRIVATE|MAP_ANON>,0xffff=
ffff,0x1c,0,0)
34629 cc1      RET   mmap 568225792/0x21de7000
34629 cc1      PFLT  0x21de7000 VM_PROT_WRITE
34629 cc1      PRET  KERN_SUCCESS
34629 cc1      PFLT  0x21de8000 VM_PROT_WRITE
34629 cc1      PRET  KERN_SUCCESS
34629 cc1      PFLT  0x21de9000 VM_PROT_WRITE
34629 cc1      PRET  KERN_SUCCESS
34629 cc1      PFLT  0x21dea000 VM_PROT_WRITE
34629 cc1      PRET  KERN_SUCCESS
34629 cc1      PFLT  0x229e8000 VM_PROT_WRITE
34629 cc1      PRET  KERN_SUCCESS
34629 cc1      PFLT  0x229e9000 VM_PROT_WRITE
34629 cc1      PRET  KERN_SUCCESS
34629 cc1      PFLT  0x229ea000 VM_PROT_WRITE
34629 cc1      PRET  KERN_SUCCESS
34629 cc1      CSW   stop user "ast"
34629 cc1      CSW   resume user "ast"
34629 cc1      PFLT  0x229eb000 VM_PROT_WRITE
34629 cc1      PRET  KERN_SUCCESS
34629 cc1      PFLT  0x229ec000 VM_PROT_WRITE
34629 cc1      PRET  KERN_SUCCESS
34629 cc1      CALL  [-17504]
34629 cc1      RET   [-17504] -1 errno 78 Function not implemented
34629 cc1      PSIG  SIGSYS SIG_DFL code=3DSI_KERNEL

But I've no clue if the 0x229e's in t->cs.number are actually from the PFLT=
's
or not.

There is a separate bugzilla submittal for the truss crash associated with
this. John Baldwin has worked some on fixing truss so that it does not crash
for this.

But that is a somewhat distinct issue from the syscall numbers not matching=
 the
svclt's 24 bits of selection number:

svclt   0x00bf6ef0
vs.
0xff...fBBA0 and also 0x229EBBA0

So this is reporting the ktrace (and truss internal) inaccurate figures
compared to the instruction's actual pattern.

Note: I have made the assumption that the 24 bit number in the svclt
instruction is used and so is what should be reported. If not then the value
comparison needs to be based on whatever else is used.

--=20
You are receiving this mail because:
You are the assignee for the bug.=



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?bug-213937-7>