Hi Jakub,
this bug is rather curious. I will try looking into it as well.
We don't do any lazy relocation whatsoever. This was a conscious choice to
make debugging easier early in development - and I didn't implement the
other option yet.
That means the dynamic linker will process all relocations before jumping to
__main. Then normal code runs and you never enter dynamic linker (except if
you explcitly called it's API).
Cheers,
Jiri
Jakub wrote:
Hi,
"
after fixing the dynamically-linked build I noticed that the boot
process hangs upon executing klog, i.e. the first dynamically-linked
app. After some investigation, I found that for some reason the async
futex is held at the entry to __main(), which causes the system to hang
on futex_down() called from fibril_mutex_lock() called from
vfs_absolutize() called from chdir() called from __main() at a later stage.
I can't think of an explanation for why the futex is held other than the
async framework is somehow being used before __main(). I can almost rule
out memory corruption or a failure to initialize the variable because
adding another futex next to async_futex works for that shadow futex (is
properly initialized and unlocked at the entry to __main()).
Any ideas? Am I assuming correctly that the PLT entries for calls to
__main() are not linked lazily?
Jakub
_______________________________________________
HelenOS-devel mailing list
[email protected]
http://lists.modry.cz/listinfo/helenos-devel"
_______________________________________________
HelenOS-devel mailing list
[email protected]
http://lists.modry.cz/listinfo/helenos-devel