Opened 14 years ago

Closed 14 years ago

Last modified 14 years ago

#4940 closed bug (duplicate)

Block notifier/writer KDL'ed. Called with NULL pointers.

Reported by: emitrax Owned by: nobody
Priority: normal Milestone: R1
Component: Drivers/USB Version: R1/alpha1
Keywords: Cc:
Blocked By: #4901 Blocking:
Platform: All

Description

BT attached. Happened while checking out webkit repository with GIT on a BFS USB formatted stick.

Attachments (1)

block notifier BT thread_kthread_exit.png (17.9 KB ) - added by emitrax 14 years ago.

Download all attachments as: .zip

Change History (10)

comment:1 by emitrax, 14 years ago

Serial output follows.

PMA: found no free slot to store 512 bytes (4991 tries left) heap_add_area: area 3453 added to small heap 0x80f9c000 - usable range 0x90407000 - 0x90800000 PMA: found no free slot to store 512 bytes (4999 tries left) bfs: _RemoveDuplicate:1486: No such file or directory bfs: Could not find value in index "size"! bfs: Update:291: No such file or directory heap_add_area: area 11400 added to large heap 0x81c68ccc - usable range 0xa1c01000 - 0xa2000000 usb error uhci 0: td (0x036eca40) error: status: 0x004407ff; token: 0x3fe082e1; usb_disk: sending or receiving of the data failed usb_disk: write fails with 0xffffffff bfs: could not write log area: General system error! usb error uhci 0: td (0x036ee3c0) error: status: 0x004407ff; token: 0x3fe082e1; usb_disk: sending or receiving of the data failed usb_disk: write fails with 0xffffffff bfs: could not write log area: General system error! usb error uhci 0: td (0x036f0440) error: status: 0x004407ff; token: 0x3fe882e1; usb_disk: sending or receiving of the data failed usb_disk: write fails with 0xffffffff PANIC: could not write back block 6177 (General system error)

comment:2 by emitrax, 14 years ago

PMA: found no free slot to store 512 bytes (4991 tries left)

heap_add_area: area 3453 added to small heap 0x80f9c000 - usable range 0x90407000 - 0x90800000

PMA: found no free slot to store 512 bytes (4999 tries left)

bfs: _RemoveDuplicate:1486: No such file or directory

bfs: Could not find value in index "size"!

bfs: Update:291: No such file or directory

heap_add_area: area 11400 added to large heap 0x81c68ccc - usable range 0xa1c01000 - 0xa2000000

usb error uhci 0: td (0x036eca40) error: status: 0x004407ff; token: 0x3fe082e1;

usb_disk: sending or receiving of the data failed

usb_disk: write fails with 0xffffffff

bfs: could not write log area: General system error!

usb error uhci 0: td (0x036ee3c0) error: status: 0x004407ff; token: 0x3fe082e1;

usb_disk: sending or receiving of the data failed

usb_disk: write fails with 0xffffffff

bfs: could not write log area: General system error!

usb error uhci 0: td (0x036f0440) error: status: 0x004407ff; token: 0x3fe882e1;

usb_disk: sending or receiving of the data failed

usb_disk: write fails with 0xffffffff

PANIC: could not write back block 6177 (General system error)

comment:3 by axeld, 14 years ago

Blocked By: 4901 added
Resolution: duplicate
Status: newclosed

Obviously the same as #4901. The NULL pointer stuff is also obviously not true, or else the error would look differently.

comment:4 by emitrax, 14 years ago

Definitely the same. I'm sorry.

About the NULL pointer though, I don't understand why you say it's not true. From the stack trace it looks like the function is called with NULL parameters. Care to explain? Thanks.

comment:5 by axeld, 14 years ago

Component: File SystemsDrivers/USB

That function cannot be called with NULL pointers. It just doesn't make any sense. And if that would be the case, it would have crashed with a NULL pointer access.

So what has obviously happened is that the stack frame has not been unwound correctly, therefore it does not show you the actual arguments given.

in reply to:  5 comment:6 by bonefish, 14 years ago

Replying to axeld:

So what has obviously happened is that the stack frame has not been unwound correctly, therefore it does not show you the actual arguments given.

The stack frames have been correctly unwound. The problem is that for static functions GCC (4 only?) often uses registers to pass arguments. Unfortunately there's no way to for our kernel debugger to known that short of using the DWARF debug info -- which is neither loaded, nor even built in by default.

The only real alternative is to force gcc never to pass arguments via registers, which will, of course, neither help performance nor code size.

comment:7 by emitrax, 14 years ago

Thanks to both for the explanation.

comment:8 by axeld, 14 years ago

Thanks bonefish, that makes sense!

emitrax, does that mean you are on a GCC4 build?

comment:9 by emitrax, 14 years ago

Actually yes, I am.

Note: See TracTickets for help on using tickets.