On Wed, Jul 26, 2017 at 10:26 PM, Ian Lance Taylor <i...@golang.org> wrote:
> On Sat, Jul 22, 2017 at 11:08 AM, Uros Bizjak <ubiz...@gmail.com> wrote:
>>> This patch to the gotools Makefile adds tests to `make check`.  We now
>>> test the runtime package using the newly built go tool, and test that
>>> cgo works by running the misc/cgo/test and misc/cgo/testcarchive
>>> tests.  Bootstrapped and ran Go testsuite on x86_64-pc-linux-gnu.
>>> Committed to mainline.
>>
>> There is now only one remaining gotools testsuite failure on alpha:
>>
>> FAIL: TestBreakpoint
>>         crash_test.go:106: testprog Breakpoint exit status: exit status 2
>>         crash_test.go:310: output:
>>                 SIGTRAP: trace trap
>>                 PC=2199039253124 m=0 sigcode=0
>>
>>                 goroutine 1 [running]:
>>
>>                 goroutine 3 [runnable]:
>>                 created by runtime.SetFinalizer
>>
>> /space/homedirs/uros/gcc-svn/trunk/libgo/go/runtime/mfinal.go:355
>> +1280
>>
>>
>>
>>                 want output containing: runtime.Breakpoint
>>
>> I would like to debug this one failure only. Is there a way to run
>> only one gotools test? Can you perhaps give a hint where to look in
>> the source?
>
> The test is TestBreakpoint in libgo/go/runtime/crash_test.go.  It is
> testing that if it runs a program that calls `runtime.Breakpoint`,
> then `runtime.Breakpoint` will appear in the stack trace that the
> program emits.
>
> It does this by building a test program.  The easy way to do this
> yourself is to run `make install` in your GCC build directory, set
> LD_LIBRARY_PATH if needed to include the newly installed libgo.so, and
> then do
>
> cd SRCDIR/libgo/go/runtime/testdata/testprog
> go build    # run the `go` program installed from gotools, building
> ./testprog; you can use `go build -o /tmp/x` if you like
> ./testprog Breakpoint
>
> On my x86_64 system that prints the appended, which includes the
> desired `runtime.Breakpoint` string.  On your system it fails to print
> a stack trace, but I don't know why.
>
> Ian
>
>
>
> SIGILL: illegal instruction
> PC=140647499814795 m=0 sigcode=2

On a related note, the above is printed from:

go/runtime/signal_sighandler.go:        print("PC=", hex(sigpc), "
m=", _g_.m.id, " sigcode=", c.sigcode(), "\n")

with the intention that PC is printed in the hex notation, but this is
not the case in the dumps.

I suspect hex(...) function is not working properly.

Uros.

Reply via email to