https://gcc.gnu.org/bugzilla/show_bug.cgi?id=90482

            Bug ID: 90482
           Summary: [10 regression] Many 32-bit Solaris/SPARC tests FAIL
                    with SIGBUS
           Product: gcc
           Version: 10.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: go
          Assignee: ian at airs dot com
          Reporter: ro at gcc dot gnu.org
                CC: cmang at google dot com
  Target Milestone: ---
            Target: sparc*-sun-solaris2.11

Between 20190426 (r270592) and 20190502 (r270801), quite a number of 32-bit
libgo tests started to FAIL on Solaris 11/SPARC:

+FAIL: archive/tar
+FAIL: archive/zip
+FAIL: cmd/go/internal/cache
+FAIL: cmd/go/internal/generate
+FAIL: cmd/go/internal/get
+FAIL: cmd/go/internal/imports
+FAIL: cmd/go/internal/load
+FAIL: cmd/go/internal/modconv
+FAIL: cmd/go/internal/modfetch
+FAIL: cmd/go/internal/modfetch/codehost
+FAIL: cmd/go/internal/modfile
+FAIL: cmd/go/internal/modload
+FAIL: cmd/go/internal/mvs
+FAIL: cmd/go/internal/search
+FAIL: cmd/go/internal/web2
+FAIL: cmd/go/internal/work
+FAIL: crypto/ecdsa
+FAIL: crypto/elliptic
+FAIL: crypto/tls
+FAIL: crypto/x509
+FAIL: encoding/json
+FAIL: go/constant
+FAIL: go/doc
+FAIL: go/importer
+FAIL: go/internal/gccgoimporter
+FAIL: go/internal/gcimporter
+FAIL: go/internal/srcimporter
+FAIL: go/parser
+FAIL: go/types
+FAIL: image/draw
+FAIL: index/suffixarray
+FAIL: internal/x/net/http/httpproxy
+FAIL: io/ioutil
+FAIL: log
+FAIL: mime/multipart
+FAIL: mime/quotedprintable
+FAIL: net/http/fcgi
+FAIL: net/http/httptest
+FAIL: net/http/httputil
+FAIL: reflect
+FAIL: regexp
+FAIL: regexp/syntax
+FAIL: runtime/pprof/internal/profile

A reghunt revealed that this was caused by

The first bad revision is:
changeset:   52654:1c7bcc41ff5f
user:        ian@138bc75d-0d04-0410-961f-82ee72b054a4
date:        Wed May 01 21:34:16 2019 +0000
summary:     compiler,runtime: do more direct interfaces
unexpected fault address 49
fatal error: fault
[signal SIGBUS: bus error code=1 addr=49 pc=4272022460]

goroutine 1 [running, locked to thread]:
runtime.dopanic_m
        /var/gcc/reghunt/trunk/libgo/go/runtime/panic.go:1037
runtime.fatalthrow
        /var/gcc/reghunt/trunk/libgo/go/runtime/panic.go:906
runtime.throw
        /var/gcc/reghunt/trunk/libgo/go/runtime/panic.go:877
runtime.sigpanic
        /var/gcc/reghunt/trunk/libgo/go/runtime/signal_unix.go:347
runtime.sighandler
        /var/gcc/reghunt/trunk/libgo/go/runtime/signal_sighandler.go:100
runtime.sigtrampgo
        /var/gcc/reghunt/trunk/libgo/go/runtime/signal_unix.go:314
__sighndlr
        :0
regexp..z2fsyntax.ranges.Less
        /var/gcc/reghunt/trunk/libgo/go/regexp/syntax/parse.go:1868
sort.medianOfThree
        /var/gcc/reghunt/trunk/libgo/go/sort/sort.go:76
sort.doPivot
        /var/gcc/reghunt/trunk/libgo/go/sort/sort.go:105
sort.quickSort
        /var/gcc/reghunt/trunk/libgo/go/sort/sort.go:190
sort.Sort
        /var/gcc/reghunt/trunk/libgo/go/sort/sort.go:218
syntax.cleanClass
        /var/gcc/reghunt/trunk/libgo/go/regexp/syntax/parse.go:1631
regexp..z2fsyntax.parser.parseClass
        /var/gcc/reghunt/trunk/libgo/go/regexp/syntax/parse.go:1617
regexp..z2fsyntax.Parse
        /var/gcc/reghunt/trunk/libgo/go/regexp/syntax/parse.go:774
regexp.compile
        /var/gcc/reghunt/trunk/libgo/go/regexp/regexp.go:168
regexp.Compile
        /var/gcc/reghunt/trunk/libgo/go/regexp/regexp.go:131
regexp.MustCompile
        /var/gcc/reghunt/trunk/libgo/go/regexp/regexp.go:270
cmd..z2fgo..z2finternal..z2fmodfile..import
        /var/gcc/reghunt/trunk/libgo/go/cmd/go/internal/modfile/rule.go:157
__go_init_main
       
/var/gcc/reghunt/libgo32/52654/sparc-sun-solaris2.11/libgo/gotest8213/test/_testmain.go:1
runtime.main
        /var/gcc/reghunt/trunk/libgo/go/runtime/proc.go:209

goroutine 4 [syscall]:
        goroutine in C code; stack unavailable
created by os..z2fsignal.os..z2fsignal..init0
        /var/gcc/reghunt/trunk/libgo/go/os/signal/signal_unix.go:29 +36
/var/gcc/reghunt/trunk/libgo/testsuite/gotest[689]: wait: 8385: Terminated
Keeping gotest8213
FAIL: cmd/go/internal/modload

gdb shows

Thread 2 received signal SIGSEGV, Segmentation fault.
[Switching to Thread 1 (LWP 1)]
0xfe97d644 in regexp..z2fsyntax.ranges.Less (ra=..., i=0, j=28)
    at /var/gcc/reghunt/trunk/libgo/go/regexp/syntax/parse.go:1868
1868            return p[i] < p[j] || p[i] == p[j] && p[i+1] > p[j+1]
(gdb) where
#0  0xfe97d644 in regexp..z2fsyntax.ranges.Less (ra=..., i=0, j=28)
    at /var/gcc/reghunt/trunk/libgo/go/regexp/syntax/parse.go:1868
#1  0xfea1e3bc in sort.medianOfThree (data=..., m1=0, m0=14, m2=27)
    at /var/gcc/reghunt/trunk/libgo/go/sort/sort.go:76
#2  0xfea1e4a8 in sort.doPivot (hi=<optimized out>, lo=0, data=...)
    at /var/gcc/reghunt/trunk/libgo/go/sort/sort.go:105
#3  sort.quickSort (data=..., a=0, b=<optimized out>, maxDepth=9)
    at /var/gcc/reghunt/trunk/libgo/go/sort/sort.go:190
#4  0xfea1e9c8 in sort.Sort (data=...)
    at /var/gcc/reghunt/trunk/libgo/go/sort/sort.go:218
#5  0xfe980408 in syntax.cleanClass (rp=rp@entry=0x710114)
    at /var/gcc/reghunt/trunk/libgo/go/regexp/syntax/parse.go:1631
#6  0xfe987828 in regexp..z2fsyntax.parser.parseClass (p=p@entry=0x7180c0, 
    s=...) at /var/gcc/reghunt/trunk/libgo/go/regexp/syntax/parse.go:1617
#7  0xfe98a9a4 in regexp..z2fsyntax.Parse (s=..., flags=flags@entry=212)
    at /var/gcc/reghunt/trunk/libgo/go/regexp/syntax/parse.go:774
#8  0xfe974140 in regexp.compile (expr=..., mode=mode@entry=212, 
    longest=longest@entry=false)
    at /var/gcc/reghunt/trunk/libgo/go/regexp/regexp.go:168
#9  0xfe975184 in regexp.Compile (expr=...)
    at /var/gcc/reghunt/trunk/libgo/go/regexp/regexp.go:131
#10 0xfe975318 in regexp.MustCompile (str=...)
    at /var/gcc/reghunt/trunk/libgo/go/regexp/regexp.go:270
#11 0x00154828 in cmd..z2fgo..z2finternal..z2fmodfile..import ()
    at /var/gcc/reghunt/trunk/libgo/go/cmd/go/internal/modfile/rule.go:157
#12 0x000ef9e8 in main.init () at _testmain.go:1
#13 0xfe9e366c in runtime.main (p.0=0x0)
    at /var/gcc/reghunt/trunk/libgo/go/runtime/proc.go:209
#14 0xfe9dfe50 in runtime.kickoff ()
    at /var/gcc/reghunt/trunk/libgo/go/runtime/proc.go:1205
#15 0xfda8b32c in __makecontext_v2 () from /lib/libc.so.1

However, the signal is wrong due to a gdb bug.  truss shows it's a SIGBUS
instead:

/1:         Incurred fault #5, FLTACCESS  %pc = 0xFE97D644
/1:           siginfo: SIGBUS BUS_ADRALN addr=0x00000031
/1:         Received signal #10, SIGBUS [caught]
/1:           siginfo: SIGBUS BUS_ADRALN addr=0x00000031

#0  0xfe97d644 in regexp..z2fsyntax.ranges.Less (ra=..., i=0, j=28)
    at /var/gcc/reghunt/trunk/libgo/go/regexp/syntax/parse.go:1868
1868            return p[i] < p[j] || p[i] == p[j] && p[i+1] > p[j+1]
(gdb) p p
$5 = {__values = 0x31, __count = 57, __capacity = <optimized out>}

Reply via email to