On Thu, May 20, 2021 at 6:13 AM Ben Fiedler <[email protected]> wrote:
>
> Hello everyone,
>
> I've recently found an interesting bug that only occurs when compiling in 
> release mode.
>
> Use of the ZF_LOG library (for normal log output) leads to syscalls being 
> made when the capdl-loader runs.
> These are invoked via musllibc's __stdio_write, which relies on __sysinfo 
> being set correctly for syscalls to
> work. When compiling with RELEASE=OFF this works fine, however when compiling 
> with RELEASE=ON, __sysinfo is
> not set (yet?), and subsequently leads to an illegal prefetch exception when 
> __stdio_write tries to invoke
> a syscall.
>
> Setting __sysinfo to sel4_vsyscall using gdb during runtime fixes this. I 
> don't really know the correct
> place to fix this in the code, but I hope that you can provide some hints on 
> where to fix this bug.
>

If you look in the CMake file capdl-loader-app/helpers.cmake you will
see that libsel4muslcsys is only linked into the capdl-loader-app
under debug builds.  This library implements the registration of a set
of syscalls under __sysinfo and any printing would need to go through
that.  Thus, the capdl-loader-app doesn't support log output via
ZF_LOG while RELEASE=ON.

RELEASE=ON essentially does 2 things currently: Turn off kernel debug
syscalls, and turn up optimization levels for the compiler.  The
printing in the capdl-loader-app needs the seL4_DebugPutChar syscall,
so you would still need that syscall  to turn on printing.

If you wanted to add printing when RELEASE=ON then you would need to
link libsel4muslcsys unconditionally, and edit main.c to call
init_bootinfo also, and you would need to also set KernelPrinting=ON.

Hope this helps.

> Thanks a lot for your help!
>
> Cheers,
> Ben
> _______________________________________________
> Devel mailing list -- [email protected]
> To unsubscribe send an email to [email protected]
_______________________________________________
Devel mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to