Also I have noticed my stack trace does not show Golang symbol names like some example stacktraces in #850 do have. What am I missing to make the stack traces to show Golang symbols? I dit verify with readelf that the hello shared library has debugging info in it. Is it because upload_manifest.py strips all *.so files?
Waldek On Thursday, December 28, 2017 at 11:00:43 AM UTC-5, Waldek Kozaczuk wrote: > > I can see that for example this patch - > https://groups.google.com/forum/#!searchin/osv-dev/golang$20example%7Csort:date/osv-dev/Jkd7mX18QQQ/T2RyQvCsCAAJ > > - was just to make the go example build properly but not necessarily run. > And this branch commit would probably make the example run - > https://github.com/benoit-canet/osv/commit/c93d358db133af3a4014c09f7b4ccf49edfeba15 > . > > Yes I am very interested in getting Golang work on OSv and I can help with > testing and reviving/reviewing the patches. Can someone (@benoit-canet) > elaborate where exactly are we with the state of the state of Go support - > remaining issues, submitted patches that need to be reviewed? I understand > that adding Go support to OSv is not as trivial as adding read-only > filesystem :-) > > I also saw that @HawxChen submitted a patch ( > https://groups.google.com/forum/#!searchin/osv-dev/golang$20example%7Csort:date/osv-dev/Ol1zuoOwjzg/PVa3u3_VAwAJ) > > to address issue #808 but it seems he had some issues he could not overcome? > > Thanks, > Waldek > > On Thursday, December 28, 2017 at 2:28:58 AM UTC-5, Nadav Har'El wrote: >> >> >> On Thu, Dec 28, 2017 at 8:14 AM, Waldek Kozaczuk <jwkoz...@gmail.com> >> wrote: >> >>> When I build it using go 1.8.3 the image fails with following stacktrace: >>> >>> OSv v0.24-469-g2eab5f3 >>> eth0: 192.168.122.15 >>> [registers] >>> RIP: 0x0000100000c54812 <???+12929042> >>> RFL: 0x0000000000010206 CS: 0x0000000000000008 SS: 0x0000000000000010 >>> RAX: 0x66078351029700e4 RBX: 0x0000100000f56060 RCX: >>> 0x00002000000ff5d8 RDX: 0x00002000000ff5d8 >>> RSI: 0x0000000000000003 RDI: 0x0000100000f56ed0 RBP: >>> 0x00002000000ff5c8 R8: 0xffff800002bf8740 >>> R9: 0x0000000000c2c5b0 R10: 0x0000000000000000 R11: >>> 0x0000000000000001 R12: 0x0000000000000002 >>> R13: 0x0000000000c2c5b0 R14: 0x0000000000000000 R15: >>> 0x0000000000000001 RSP: 0x00002000000ff570 >>> general protection fault >>> >>> [backtrace] >>> 0x000000000038a389 <general_protection+137> >>> 0x0000000000387fc2 <???+3702722> >>> 0x0000100000c773ac <???+13071276> >>> 0x0000100000c89b47 <???+13146951> >>> 0x0000100000c76fb6 <???+13070262> >>> 0x0000100000ca133e <???+13243198> >>> 0x000000000033d048 <elf::object::run_init_funcs()+200> >>> 0x0000000000342ce8 >>> <elf::program::get_library(std::__cxx11::basic_string<char, >>> std::char_traits<char>, std::allocator<char> >, >>> std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, >>> std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, >>> std::char_traits<char>, std::allocator<char> > > >)+472> >>> 0x0000000000413b93 >>> <osv::application::application(std::__cxx11::basic_string<char, >>> std::char_traits<char>, std::allocator<char> > const&, >>> std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, >>> std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, >>> std::char_traits<char>, std::allocator<char> > > > const&, bool, >>> std::unordered_map<std::__cxx11::basic_string<char, std::char_traits<char>, >>> std::allocator<char> >, std::__cxx11::basic_string<char, >>> std::char_traits<char>, std::allocator<char> >, >>> std::hash<std::__cxx11::basic_string<char, std::char_traits<char>, >>> std::allocator<char> > >, std::equal_to<std::__cxx11::basic_string<char, >>> std::char_traits<char>, std::allocator<char> > >, >>> std::allocator<std::pair<std::__cxx11::basic_string<char, >>> std::char_traits<char>, std::allocator<char> > const, >>> std::__cxx11::basic_string<char, std::char_traits<char>, >>> std::allocator<char> > > > > const*)+707> >>> 0x00000000004142d8 >>> <osv::application::run(std::__cxx11::basic_string<char, >>> std::char_traits<char>, std::allocator<char> > const&, >>> std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, >>> std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, >>> std::char_traits<char>, std::allocator<char> > > > const&, bool, >>> std::unordered_map<std::__cxx11::basic_string<char, std::char_traits<char>, >>> std::allocator<char> >, std::__cxx11::basic_string<char, >>> std::char_traits<char>, std::allocator<char> >, >>> std::hash<std::__cxx11::basic_string<char, std::char_traits<char>, >>> std::allocator<char> > >, std::equal_to<std::__cxx11::basic_string<char, >>> std::char_traits<char>, std::allocator<char> > >, >>> std::allocator<std::pair<std::__cxx11::basic_string<char, >>> std::char_traits<char>, std::allocator<char> > const, >>> std::__cxx11::basic_string<char, std::char_traits<char>, >>> std::allocator<char> > > > > const*)+104> >>> 0x00000000004144eb >>> <osv::application::run(std::vector<std::__cxx11::basic_string<char, >>> std::char_traits<char>, std::allocator<char> >, >>> std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, >>> std::allocator<char> > > > const&)+27> >>> 0x0000000000213a49 <do_main_thread(void*)+2649> >>> 0x0000000000443b85 <???+4471685> >>> 0x00000000003e5446 <thread_main_c+38> >>> 0x0000000000388f82 <???+3706754> >>> >>> When I build it using go 1.7.6: >>> OSv v0.24-469-g2eab5f3 >>> eth0: 192.168.122.15 >>> syscall(): unimplemented system call 200 >>> syscall(): unimplemented system call 231 >>> page fault outside application, addr: 0x0000000000000000 >>> [registers] >>> RIP: 0x0000000000378615 <call_signal_handler+309> >>> RFL: 0x0000000000010206 CS: 0x0000000000000008 SS: 0x0000000000000010 >>> RAX: 0x0000000000f55ef0 RBX: 0x0000000000000008 RCX: >>> 0x0000100000ca401b RDX: 0x0000000000000000 >>> RSI: 0x000000000000000b RDI: 0x0000000000000002 RBP: >>> 0x00002000001ffcb0 R8: 0x0000000000000001 >>> R9: 0x0000000000c2c5b0 R10: 0x0000000000000008 R11: >>> 0x0000000000000202 R12: 0xffffa00001787190 >>> R13: 0x0000000000c2c5b0 R14: 0x0000000000000008 R15: >>> 0x0000000000000202 RSP: 0x00002000001ff580 >>> Aborted >>> >>> [backtrace] >>> 0x000000000032a168 <???+3318120> >>> 0x000000000032b14b <mmu::vm_fault(unsigned long, exception_frame*)+171> >>> 0x0000000000389178 <page_fault+136> >>> 0x0000000000388006 <???+3702790> >>> 0x0000000000388f8a <???+3706762> >>> 0x0000100000c8555b <???+13129051> >>> 0x0000100000ca0786 <???+13240198> >>> 0x00000000003e5446 <thread_main_c+38> >>> 0x0000000000388f82 <???+3706754> >>> >>> I thought that this simple app was supposed to work. It does not use >>> goroutines and should not have issues with "tiny stack" - >>> https://github.com/cloudius-systems/osv/issues/808. >>> >> >> I don't think this example works with the mainline version of OSv, see >> https://github.com/cloudius-systems/osv/issues/850 >> Benoit had some additional go-related OSv patches that were never >> committed, and I believe are important to run this test. >> Benoit, is this also what you remember? >> Seeing the error is different in the two versions of Go, it's also >> possible that the Go runtime changed and we also have new problems now... >> >> If you have the energy and interest to work with Go, you are welcome to >> revive that thread of committing Benoit's patches, as well as testing them >> on the new Go (with Benoit's patches, this test should work but perhaps >> never exit, as shown in issue #850). I don't know if Benoit is still >> interest to be involved. >> >> >> >>> What am I doing wrong? >>> >>> Waldek >>> >>> -- >>> You received this message because you are subscribed to the Google >>> Groups "OSv Development" group. >>> To unsubscribe from this group and stop receiving emails from it, send >>> an email to osv-dev+u...@googlegroups.com. >>> For more options, visit https://groups.google.com/d/optout. >>> >> >> -- You received this message because you are subscribed to the Google Groups "OSv Development" group. To unsubscribe from this group and stop receiving emails from it, send an email to osv-dev+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.