Re: Crash
kkjoe kkjoe <[email protected]>
| Newsgroups | gmane.linux.isdn.i4l.user |
|---|---|
| Message-ID | <CA+So++vEhDr0vRPz=2MToC2LT+AL7d43McD6RJhvAPECWsUViw@mail.gmail.com> |
it looks like that dsp_Function get called from two different threads. dsp_core.c - function dsp_function: 1. hh->prim == PH_DEACTIVATE_REQ - ch->recv(ch->peer, skb) - crash occurs 2. hh->prim == PH_DEACTIVATE_CNF - dsp->up->send(dsp->up, skb) returns 0 dsp_function switch enter PH_DEACTIVATE_REQ dsp_function before ch->recv(ch->peer, skb) dsp_function: enter dsp_function switch enter PH_DEACTIVATE_CNF before dsp->up->send(dsp->up, skb) valuex: 0 dsp_function after ch->recv(ch->peer, skb) returns: 0 CPU 0 Unable to handle kernel paging request at virtual address c1081088, epc == c1163fcc, ra == c1163af0 Oops[#1]: Do you have any idee how to debug any further ? regard, 2013/5/9 kkjoe kkjoe <[email protected]> > Yes i have recompiled both, kernel and module with debugging symbols. > I've add some more printks in dsp_function and got these: > > Printk before crash: > > dsp_function before skb_queue_purge(&dsp->sendq); > dsp_function before spin_unlock_irqrestore > dsp_function before ch->recv(ch->peer, skb) > dsp_function enter > dsp_function switch enter PH_DEACTIVATE_CNF > dsp_function: b_channel is now inactive DSP_C2(0xc10b8000) > dsp_function exit before dsp->up->send(dsp->up, skb) > CPU 0 Unable to handle kernel paging request at virtual address c10b8088, > epc == c10821e8, ra == c10821dc > Oops[#1]: > > Sourcecode: > > case (PH_DEACTIVATE_CNF): > printk(KERN_DEBUG "dsp_function switch enter > PH_DEACTIVATE_CNF\n"); > printk(KERN_DEBUG "%s: b_channel is now inactive %s\n", > __func__, dsp->name); > /* bchannel now inactive */ > spin_lock_irqsave(&dsp_lock, flags); > dsp->b_active = 0; > dsp->data_pending = 0; > dsp_cmx_hardware(dsp->conf, dsp); > dsp_rx_off(dsp); > spin_unlock_irqrestore(&dsp_lock, flags); > hh->prim = DL_RELEASE_CNF; > if (dsp->up) { > printk(KERN_DEBUG "dsp_function exit before > dsp->up->send(dsp->up, skb)\n"); > return dsp->up->send(dsp->up, skb); > } > break; > > It seems that dsp->up->send is last function before crash occurs. > > regards, > > > 2013/5/9 Andreas Eversberg <[email protected]> > >> kkjoe kkjoe wrote: >> >> Hello, >> >> i have recompiled the kernel and the module and could reproduce the oops. >> >> [<c1166438>] dsp_function+0x994/0x1e3c [mISDN_dsp] >> [<c0059a88>] bchannel_bh+0x130/0x148 [mISDN_core] >> [<8013dd38>] run_workqueue+0xb4/0x2d0 >> [<8013ed64>] worker_thread+0x94/0x140 >> [<80143a3c>] kthread+0x80/0xa8 >> [<80106010>] kernel_thread_helper+0x10/0x18 >> >> // Get Symbol offset >> /mnt/cf0/modules/misdn # cat /sys/module/mISDN_dsp/sections/.init.text >> 0xc0079000 >> >> // Load Symbol file >> /mnt/cf0/modules/misdn # /mnt/cf0/bin/gdb mISDN_dsp.ko >> GNU gdb 6.8 >> Copyright (C) 2008 Free Software Foundation, Inc. >> License GPLv3+: GNU GPL version 3 or later < >> http://gnu.org/licenses/gpl.html> >> This is free software: you are free to change and redistribute it. >> There is NO WARRANTY, to the extent permitted by law. Type "show copying" >> and "show warranty" for details. >> This GDB was configured as "mipsel-unknown-linux-gnu"... >> (gdb) add-symbol-file /mnt/cf0/modules/misdn/mISDN_dsp.o 0xc0079000 >> add symbol table from file "/mnt/cf0/modules/misdn/mISDN_dsp.o" at >> .text_addr = 0xc0079000 >> (y or n) y >> Reading symbols from /mnt/cf0/modules/misdn/mISDN_dsp.o...done. >> (gdb) >> >> // Get source line - does not work >> (gdb) b *dsp_function + 0x994 >> Breakpoint 1 at 0x1438 >> -> I do not get any source line >> // get start location >> (gdb) disassemble dsp_function >> Dump of assembler code for function dsp_function: >> 0x00000aa4 <dsp_function+0>: addiu sp,sp,-88 >> >> (gdb) b *dsp_function + 0x00001e3c >> Breakpoint 3 at 0x28e0: file >> /home/kkjoe/test/test1/mIsdn/mISDN/standalone/drivers/isdn/mISDN/dsp_cmx.c, >> line 1922. >> >> best regards and thank you very much for your support >> >> >> 2013/5/9 jolly <[email protected]> >> >>> kkjoe kkjoe wrote: >>> > Do i have to rebuild the kernel and the misdn modules with debugging >>> > information ? >>> yes. >>> >> >> can you try to test some words before and after, like 0x988-0x99f ? >> area there lines close before and after the crash point? did you re-compile >> misdn after adding kernel debugging? anyone else an idea how to find that >> line? >> >> > _______________________________________________ isdn4linux mailing list [email protected] https://www.isdn4linux.de/mailman/listinfo/isdn4linux