Opened 12 years ago

Closed 12 years ago

Last modified 12 years ago

#486 closed defect (fixed)

i8042 crashes for unknown reason

Reported by: Jiří Zárevúcky Owned by:
Priority: major Milestone: 0.6.0
Component: helenos/unspecified Version: mainline
Keywords: Cc:
Blocker for: Depends on:
See also:

Description

I've stumbled upon this when trying to figure out why the GUI freezes for me, though I have no idea if it's related or what caused it. Screenshot attached.

Attachments (2)

i8042_crash.png (29.3 KB ) - added by Jiří Zárevúcky 12 years ago.
screenshot of the crash info in kconsole
i8042.tar.bz2 (654.1 KB ) - added by Jiří Zárevúcky 12 years ago.
Binary and disassembly

Download all attachments as: .zip

Change History (10)

by Jiří Zárevúcky, 12 years ago

Attachment: i8042_crash.png added

screenshot of the crash info in kconsole

comment:1 by Jakub Jermář, 12 years ago

Hi, could you also load the compressed i8042 binary which crashed?

comment:2 by Jiri Svoboda, 12 years ago

Ideally build with line debugging information and include the disassembly.

by Jiří Zárevúcky, 12 years ago

Attachment: i8042.tar.bz2 added

Binary and disassembly

comment:3 by Jiří Zárevúcky, 12 years ago

Yes, of course. By the way, why is there no email when an attachment is added?

comment:4 by Jakub Jermář, 12 years ago

Applying the disassembly to the stacktrace printed at i8042 crash, the driver crashed here:

tls_alloc_variant_2()+0x15:

	tcb->self = tcb;
    f0a3:	89 00                	mov    %eax,(%eax)

while it was doing:

tls_alloc_variant_2()+0x15
__make_tls()+0x1a
fibril_setup()+0x5
process_notification()+0x43
fibril_main()+0x19

comment:5 by Jakub Jermář, 12 years ago

Can it be that memalign() simply fails to allocate TLS data for the notification fibril?

        size = ALIGN_UP(size, &_tls_alignment);
        *data = memalign((uintptr_t) &_tls_alignment, sizeof(tcb_t) + size);

        tcb = (tcb_t *) (*data + size);
        tcb->self = tcb;

&_tls_alignment is 4 and 76 = 19 * 4, so memalign() must have returned NULL.

Last edited 12 years ago by Jakub Jermář (previous) (diff)

comment:6 by Jakub Jermář, 12 years ago

Clearly, we need to check the return value from memalign() here.

comment:7 by Jakub Jermář, 12 years ago

Resolution: fixed
Status: newclosed

Fixed in mainline,1641.

comment:8 by Jakub Jermář, 12 years ago

Milestone: 0.5.1
Note: See TracTickets for help on using tickets.