Implemented experimental stack switch for current genode 21.08/gcc10.3 (by 
opaque structure Thread rewriting) during setcontext()
 
Works  for many CPU, with gcc optimization turned on (tested on 4) on NOVA and 
linux x86_64, sometimes works on sel4 

To run need 2 repos:
https://github.com/tor-m6/genode.git
(Need to checkout 21.08 branch)
https://github.com/tor-m6/genode-world.git
(Need to checkout 21.08experimental)

I successfully run some tests with channels/async goroutines - some of them 
(Like Hanoi towers or barber serving) inside
https://github.com/tor-m6/genode-world/blob/21.08experimental/src/test/go_app/main.go

All of them commented out - you can compile any between «package main» lines, 
or try your own

More details in
https://github.com/tor-m6/genode-world/blob/21.08experimental/src/test/go_app/README.golang

Note 1: As pointed by Use, I know that potentially it could fail if you try to 
acquire genode resources/caps directly from go code, while all tests and 
anything backend by libc port should work.

Note 2: sel4 problem: on my working copy it works always, while fresh rebuild 
fail during golang stack unwind - because of guard page «edge»  access. Still 
not able to debug…
Question: how to print call stack from page fault?
Error message below, I need to understand a reason, not just place - I know it 
inside function
_Unwind_GetGR():
/genodelabs-genode-c0150f9/contrib/gcc-bc8a730adbf377de2c449d222a0df0ba7096a4b8/src/noux-pkg/gcc/libgcc/unwind-dw2.c:234

Warning: page-fault, pager_object: pd='init -> test-go' thread='ep' 
ip=0x112938f pf-addr=0x403ff008

Sincerely,
        Alexander

_______________________________________________
Genode users mailing list
[email protected]
https://lists.genode.org/listinfo/users

Reply via email to