Re: crash in 'wake_up_interruptible()' on SMP

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Thu, Dec 14, 2006 at 05:46:25PM +0530, kiran kumar wrote:
> Can some one explain why I see the below crash on Intel Xeon SMP box. The
> kernel version is 2.6.11. This is what I'm trying to do in the driver.
> 
> 1.Submit a request to a device in 'unlocked_ioctl()' and issue
> 'wait_event_interruptible _timeout()' for 10 jiffies. There can be many such
> outstanding requests issued by different processes and all these are placed
> in a queue.
> 2.The 'wake_up_interruptible()' is issued either from tasklet or a
> poll-thread which polls on the status of the request.
> 3. The request queue is protected using  'spin_lock_bh/spin_unlock_bh' to be
> softIRQ safe. I'm stating this to point that
> 'spin_lock_irqsave/spin_lock_irqrestore' is issued only with waitQ.
> 
> If i either not use 'unlocked_ioctl()' i.e. use ioctl() (or)comment out
> 'wake_up_interruptible()' call I don't see the crash. Is
> wake_up_interruptible SMP safe???

Yes, it certainly is. Aren't *you* assuming it is not?

> Regards,
> kiran
> 
> /---------------------------------------------------------------------------------------------------------/
> [root@localhost ~]# ------------[ cut here ]------------
> kernel BUG at include/asm/spinlock.h:112!

Have you tried reading the code at appointed line and the code for
wake_up_interruptible (or more precisely for __wake_up, which implements
the wake_up_* variants)? It would tell you why you have a misslock.

> invalid operand: 0000 [#1]
> SMP
> Modules linked in: pkp_drv(U) md5 ipv6 parport_pc lp parport autofs4 rfcomm
> l2cap bluetooth sunrpc dm_mod video button battery ac uhci_hcd hw_random
> i2c_i801 i2c_core shpchp e1000 e100 mii floppy sata_sil libata scsi_mod ext3
> jbd
> CPU:    0
> EIP:    0060:[<c03087b0>]    Tainted: P      VLI
> EFLAGS: 00210002   (2.6.11-1.1369_FC4smp)
> EIP is at _spin_unlock_irqrestore+0x26/0x30
> eax: 00000001   ebx: cfefb810   ecx: cfefb810   edx: 00200292
> esi: 00000000   edi: e0af0f20   ebp: 00000000   esp: c8ae2e10
> ds: 007b   es: 007b   ss: 0068
> Process swamp (pid: 5920, threadinfo=c8ae2000 task=c79d4a80)
> Stack: badc0ded e0c8e1af 00000000 e0af0268 e0a86ef8 e0c87f46 00000802
> 00000000
>       00200286 e0a86ef8 00200286 e0c9c580 00000000 e0c87dd1 cfec1810
> d028a810
>       00000000 bf9fc228 e0c8dab4 00000001 c8ae2000 3f37331a bf9fc228
> e0c9c580

Did you ever heared of the ksymoops tool? You dare to program in kernel
and never heared of that??

> /----------------------------------------------------------------------------------------------------------------------------------/

--------------------------------------------------------------------------------
                  				- Jan Hudec `Bulb' <bulb@xxxxxx>

--
Kernelnewbies: Help each other learn about the Linux kernel.
Archive:       http://mail.nl.linux.org/kernelnewbies/
FAQ:           http://kernelnewbies.org/faq/


[Index of Archives]     [Newbies FAQ]     [Linux Kernel Mentors]     [Linux Kernel Development]     [IETF Annouce]     [Git]     [Networking]     [Security]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux RAID]     [Linux SCSI]     [Linux ACPI]
  Powered by Linux