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;

The only problem is that the reported fault address (76) does not really tie in into this scenario by 12 bytes if the aligned size is 64 and memalign() did return NULL.

Version 0, edited 12 years ago by Jakub Jermář (next)

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.