Current status of genode golang port

Alexander Tormasov a.tormasov at innopolis.ru
Thu Nov 4 18:32:43 CET 2021


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



More information about the users mailing list