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
