Skip to content

cmd/go: (spurious?) rebuild due to compiler mtime #3506

@oerdnj

Description

@oerdnj
What steps will reproduce the problem?
1. Go 1 Debian packages (2:1-2 version)
2. Get helloworld.go example from front page
3. Run go build -v -x helloworld.go

What is the expected output?
Compiled helloworld

What do you see instead?
morestack trampoline not defined - runtime.morestack00
morestack trampoline not defined - runtime.morestack10
morestack trampoline not defined - runtime.morestack01
morestack trampoline not defined - runtime.morestack11
morestack trampoline not defined - runtime.morestack8
morestack trampoline not defined - runtime.morestack16
morestack trampoline not defined - runtime.morestack24
morestack trampoline not defined - runtime.morestack32
morestack trampoline not defined - runtime.morestack40
morestack trampoline not defined - runtime.morestack48
Segmentation fault

(The segfault is normally hidden by go build, but it appears when 6l or 8l invoked by
hand.)

Which compiler are you using (5g, 6g, 8g, gccgo)?
export WORK=/tmp/go-build622447413;
/usr/lib/go/pkg/tool/linux_amd64/6l -o helloworld -L $WORK $WORK/command-line-arguments.a

ondrej@howl:~$ export WORK=/tmp/go-build587634510
ondrej@howl:~$ /usr/lib/go/pkg/tool/linux_386/8l -o fibonacci -L $WORK
$WORK/command-line-arguments.a
runtime.morestack not defined
Segmentation fault


Which operating system are you using?
Debian Linux amd64 (unstable) and i386 (unstable)

Which version are you using?  (run 'go version')
go1

Please provide any additional information below.
The unfortunate thing is that output binary is produce even though linking ended in
segfault, that also points to the fact, that the output of resulting binary is not
atomic (and I think it should be, e.g. generate temp file in $WORK and move binary into
the place only if the linking was successful).

Attaching $WORK environment and strace output.

I do some packaging mumbojumbo, but in go1 all patches are related to GNU/KFreeBSD
compatibility and not distributing non *.go source files, which _should_ not really
matter (or I see no error related to that fact).

Attachments:

  1. go1-amd64-sigsegv.tar.gz (2403076 bytes)
  2. go1-i386-sigsegv.tar.gz (204314 bytes)

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions