Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

gollvm: crash of goc #53877

Open
alexanius opened this issue Jul 14, 2022 · 4 comments
Open

gollvm: crash of goc #53877

alexanius opened this issue Jul 14, 2022 · 4 comments
Assignees
Labels
NeedsInvestigation Someone must examine and confirm this is a valid issue and not a duplicate of an existing one.
Milestone

Comments

@alexanius
Copy link

What version of Go are you using (go version)?

$ go version
go version unknown linux/amd64

Does this issue reproduce with the latest release?

Yes

What operating system and processor architecture are you using (go env)?

go env Output
$ go env
GO111MODULE=""
GOARCH="amd64"
GOBIN=""
GOCACHE="/home/amarkin/.cache/go-build"
GOENV="/home/amarkin/.config/go/env"
GOEXE=""
GOEXPERIMENT="fieldtrack,regabiwrappers"
GOFLAGS=""
GOHOSTARCH="amd64"
GOHOSTOS="linux"
GOINSECURE=""
GOMODCACHE="/home/amarkin/go/pkg/mod"
GONOPROXY=""
GONOSUMDB=""
GOOS="linux"
GOPATH="/home/amarkin/go"
GOPRIVATE=""
GOPROXY="https://proxy.golang.org,direct"
GOROOT="/home/amarkin/repos/gollvm_reference_bin"
GOSUMDB="sum.golang.org"
GOTMPDIR=""
GOTOOLDIR="/home/amarkin/repos/gollvm_reference_bin/tools"
GOVCS=""
GOVERSION="unknown"
GCCGO="/home/amarkin/repos/gollvm_reference_bin/bin/llvm-goc"
GOAMD64="v1"
AR="ar"
CC="/usr/bin/cc"
CXX="/usr/bin/c++"
CGO_ENABLED="1"
GOMOD="/dev/null"
GOWORK=""
CGO_CFLAGS="-g -O2"
CGO_CPPFLAGS=""
CGO_CXXFLAGS="-g -O2"
CGO_FFLAGS="-g -O2"
CGO_LDFLAGS="-g -O2"
PKG_CONFIG="pkg-config"
GOGCCFLAGS="-fPIC -m64 -pthread -fmessage-length=0 -fdebug-prefix-map=/tmp/go-build3524345951=/tmp/go-build -gno-record-gcc-switches -funwind-tables"

What did you do?

$ cat mheap.go
package runtime

type mspan struct {
        startAddr uintptr
        specials    *special
}

func (s *mspan) base() uintptr {
        return s.startAddr
}

$ llvm-goc -c mheap.go
mheap.go:5:15: error: use of undefined type 'special'
llvm-goc: /home/amarkin/repos/llvm-reference/llvm/tools/gollvm/bridge/go-llvm-materialize.cpp:375: llvm::Value* Llvm_backend::makeFieldGEP(unsigned int, llvm::Value*): Assertion `fieldIndex < llst->getNumElements()' failed.
 #0 0x000055dc900b9880 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (.localalias) /home/amarkin/repos/llvm-reference/llvm/lib/Support/Unix/Signals.inc:565:22
 #1 0x000055dc900b993b PrintStackTraceSignalHandler(void*) /home/amarkin/repos/llvm-reference/llvm/lib/Support/Unix/Signals.inc:632:1
 #2 0x000055dc900b75a2 llvm::sys::RunSignalHandlers() (.localalias) /home/amarkin/repos/llvm-reference/llvm/lib/Support/Signals.cpp:97:20
 #3 0x000055dc900b91cc SignalHandler(int) /home/amarkin/repos/llvm-reference/llvm/lib/Support/Unix/Signals.inc:407:1
 #4 0x00007f7104abd3c0 __restore_rt (/lib/x86_64-linux-gnu/libpthread.so.0+0x143c0)
 #5 0x00007f710455503b raise /build/glibc-sMfBJT/glibc-2.31/signal/../sysdeps/unix/sysv/linux/raise.c:51:1
 #6 0x00007f7104534859 abort /build/glibc-sMfBJT/glibc-2.31/stdlib/abort.c:81:7
 #7 0x00007f7104534729 get_sysdep_segment_value /build/glibc-sMfBJT/glibc-2.31/intl/loadmsgcat.c:509:8
 #8 0x00007f7104534729 _nl_load_domain /build/glibc-sMfBJT/glibc-2.31/intl/loadmsgcat.c:970:34
 #9 0x00007f7104546006 (/lib/x86_64-linux-gnu/libc.so.6+0x34006)
#10 0x000055dc8d7da978 Llvm_backend::makeFieldGEP(unsigned int, llvm::Value*) (.localalias) /home/amarkin/repos/llvm-reference/llvm/tools/gollvm/bridge/go-llvm-materialize.cpp:376:35
#11 0x000055dc8d7dac71 Llvm_backend::materializeStructField(Bexpression*) (.localalias) /home/amarkin/repos/llvm-reference/llvm/tools/gollvm/bridge/go-llvm-materialize.cpp:404:24
#12 0x000055dc8d7e6d32 MaterializeVisitor::visitNodePost(Bnode*) /home/amarkin/repos/llvm-reference/llvm/tools/gollvm/bridge/go-llvm-materialize.cpp:2056:14
#13 0x000055dc8d7ea3b0 UpdatingNodeWalker<MaterializeVisitor>::walk(Bnode*) /home/amarkin/repos/llvm-reference/llvm/tools/gollvm/bridge/go-llvm-bnode.h:516:10
#14 0x000055dc8d7e84d5 Bnode* update_walk_nodes<MaterializeVisitor>(Bnode*, MaterializeVisitor&) /home/amarkin/repos/llvm-reference/llvm/tools/gollvm/bridge/go-llvm-bnode.h:532:8
#15 0x000055dc8d7e32a1 Llvm_backend::materialize(Bexpression*, Varexpr_context) (.localalias) /home/amarkin/repos/llvm-reference/llvm/tools/gollvm/bridge/go-llvm-materialize.cpp:2146:42
#16 0x000055dc8d6d0da6 Llvm_backend::assignment_statement(Bfunction*, Bexpression*, Bexpression*, Location) (.localalias) /home/amarkin/repos/llvm-reference/llvm/tools/gollvm/bridge/go-llvm.cpp:1880:20
#17 0x000055dc8d6530b7 Assignment_statement::do_get_backend(Translate_context*) (.localalias) /home/amarkin/repos/llvm-reference/llvm/tools/gollvm/gofrontend/go/statements.cc:1172:67
#18 0x000055dc8d650073 Statement::get_backend(Translate_context*) (.localalias) /home/amarkin/repos/llvm-reference/llvm/tools/gollvm/gofrontend/go/statements.cc:189:38
#19 0x000055dc8d5d1117 Block::get_backend(Translate_context*) (.localalias) /home/amarkin/repos/llvm-reference/llvm/tools/gollvm/gofrontend/go/gogo.cc:7114:44
#20 0x000055dc8d655f85 Block_statement::do_get_backend(Translate_context*) (.localalias) /home/amarkin/repos/llvm-reference/llvm/tools/gollvm/gofrontend/go/statements.cc:2245:45
#21 0x000055dc8d650073 Statement::get_backend(Translate_context*) (.localalias) /home/amarkin/repos/llvm-reference/llvm/tools/gollvm/gofrontend/go/statements.cc:189:38
#22 0x000055dc8d5d1117 Block::get_backend(Translate_context*) (.localalias) /home/amarkin/repos/llvm-reference/llvm/tools/gollvm/gofrontend/go/gogo.cc:7114:44
#23 0x000055dc8d5cf334 Function::build(Gogo*, Named_object*) (.localalias) /home/amarkin/repos/llvm-reference/llvm/tools/gollvm/gofrontend/go/gogo.cc:6649:53
#24 0x000055dc8d5d69c4 Named_object::get_backend(Gogo*, std::vector<Bexpression*, std::allocator<Bexpression*> >&, std::vector<Btype*, std::allocator<Btype*> >&, std::vector<Bfunction*, std::allocator<Bfunction*> >&) (.localalias) /home/amarkin/repos/llvm-reference/llvm/tools/gollvm/gofrontend/go/gogo.cc:8900:7
#25 0x000055dc8d5bef21 Gogo::write_globals() /home/amarkin/repos/llvm-reference/llvm/tools/gollvm/gofrontend/go/gogo.cc:1560:24
#26 0x000055dc8d5b6eb9 go_write_globals() /home/amarkin/repos/llvm-reference/llvm/tools/gollvm/gofrontend/go/go.cc:201:32
#27 0x000055dc8d5980c4 gollvm::driver::CompileGoImpl::invokeFrontEnd() (.localalias) /home/amarkin/repos/llvm-reference/llvm/tools/gollvm/driver/CompileGo.cpp:790:7
#28 0x000055dc8d59545e gollvm::driver::CompileGoImpl::performAction(gollvm::driver::Compilation&, gollvm::driver::Action const&, llvm::SmallVector<gollvm::driver::Artifact*, 3u> const&, gollvm::driver::Artifact const&) (.localalias) /home/amarkin/repos/llvm-reference/llvm/tools/gollvm/driver/CompileGo.cpp:192:7
#29 0x000055dc8d598fbc gollvm::driver::CompileGo::performAction(gollvm::driver::Compilation&, gollvm::driver::Action const&, llvm::SmallVector<gollvm::driver::Artifact*, 3u> const&, gollvm::driver::Artifact const&) (.localalias) /home/amarkin/repos/llvm-reference/llvm/tools/gollvm/driver/CompileGo.cpp:1005:1
#30 0x000055dc8d587a2a gollvm::driver::Driver::processAction(gollvm::driver::Action*, gollvm::driver::Compilation&, bool) (.localalias) /home/amarkin/repos/llvm-reference/llvm/tools/gollvm/driver/Driver.cpp:706:11
#31 0x000055dc8d587bf7 gollvm::driver::Driver::processActions(gollvm::driver::Compilation&) /home/amarkin/repos/llvm-reference/llvm/tools/gollvm/driver/Driver.cpp:729:9
#32 0x000055dc8d57a929 main /home/amarkin/repos/llvm-reference/llvm/tools/gollvm/driver-main/llvm-goc.cpp:228:7
#33 0x00007f71045360b3 __libc_start_main /build/glibc-sMfBJT/glibc-2.31/csu/../csu/libc-start.c:342:3
#34 0x000055dc8d579d2e _start (/home/amarkin/repos/gollvm_reference_bin/bin/llvm-goc+0x8e2d2e)
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace.
Stack dump:
0.      Program arguments: /home/amarkin/repos/gollvm_reference_bin/bin/llvm-goc -c mheap.go
Aborted (core dumped)

What did you expect to see?

No stack dump

What did you see instead?

Stack dump

@mknyszek
Copy link
Contributor

CC @thanm @cherrymui

@mknyszek mknyszek added the NeedsInvestigation Someone must examine and confirm this is a valid issue and not a duplicate of an existing one. label Jul 14, 2022
@mknyszek mknyszek added this to the gollvm milestone Jul 14, 2022
@thanm thanm self-assigned this Jul 14, 2022
@thanm
Copy link
Contributor

thanm commented Jul 14, 2022

Thanks for the report.

@ianlancetaylor
Copy link
Member

gccgo doesn't crash, it just reports an error.

@alexanius
Copy link
Author

gccgo doesn't crash, it just reports an error.

Agree, incorrect description. Uncaught internal error I think

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
NeedsInvestigation Someone must examine and confirm this is a valid issue and not a duplicate of an existing one.
Projects
None yet
Development

No branches or pull requests

4 participants