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

Reply via email to