Hi Jiri,

On 3/19/24 16:48, Jiri Svoboda wrote:
> Hi,
> 
> I am working on http://www.helenos.org/ticket/866
> 
> Looks too me like VFS crashed because of null pointer dereference on the
> first line of fibril_mutex_unlock(), which is an assert.

This sounds suspiciously like some left-over after #864 - the same area
of code.

> Could an Itanium expert help me, please?
> 
> The instruction seems to be:
> 
> 400000000001d240:       11 08 01 40 18 10       [MIB]       ld8 r33=[r32]
> 
> looks like we are reading r32. Is that the first argument to the procedure?

Yes, this will be in0 after the alloc instruction.

> To continue I would like to know the address of the calling function.
> Stack tracing is not implemented on ia64. I looked into the Itanium
> Software convetions and I am confused.. it kind of says it's up to the
> OS? And nothing in the ABI processor supplement. Any suggestions on how
> to actually do it?

So I don't remember how I actually figured out the caller for #864,
probably I added some printfs or detected the condition using an if and
then printed the caller using __builtin_return_address?

Cheers,
Jakub

> 
> Or other suggestions?
> 
> Thanks,
> Jiri
> 
> ---------- Původní e-mail ----------
> Od: HelenOS <[email protected]>
> 
> Kopie: [email protected]
> Datum: 19. 3. 2024 15:36:09
> Předmět: Re: [HelenOS-tickets] [HelenOS] #866: console input freezes on
> ia64/ski after GCC upgrade
> 
> 
>     #866: console input freezes on ia64/ski after GCC upgrade
>     -----------------------------------+-----------------------
>     Reporter: Jiří Zárevúcky | Owner: (none)
>     Type: defect | Status: new
>     Priority: major | Milestone: 0.14.1
>     Component: helenos/kernel/ia64 | Version: mainline
>     Resolution: | Keywords:
>     Blocker for: | Depends on:
>     See also: |
>     -----------------------------------+-----------------------
>     Comment (by Jiri Svoboda):
> 
>     I think it's crashing here:
> 
>     {{{
>     static void _fibril_mutex_unlock_unsafe(fibril_mutex_t *fm)
>     {
>     assert(fm->oi.owned_by == (fibril_t *) fibril_get_id()); <---
>     NULL pointer dereference??
> 
>     if (fm->counter++ < 0) {
>     awaiter_t *wdp = list_pop(&fm->waiters, awaiter_t, link);
>     assert(wdp);
> 
>     fibril_t *f = (fibril_t *) wdp->fid;
>     fm->oi.owned_by = f;
>     f->waits_for = NULL;
> 
>     fibril_notify(&wdp->event);
>     } else {
>     fm->oi.owned_by = NULL;
>     }
>     }
>     }}}
>     -- 
>     Ticket URL: <http://www.helenos.org/ticket/866#comment:6>
>     HelenOS <http://www.helenos.org/>
>     HelenOS Operating System
>     _______________________________________________
>     HelenOS-tickets mailing list
>     [email protected]
>     http://lists.modry.cz/listinfo/helenos-tickets
> 
> 
> _______________________________________________
> 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