[linux-dvb] ifconfig locks on down - B2C2 flexcop.

Johannes Stezenbach js at linuxtv.org
Wed Jul 13 13:15:03 CEST 2005


stonewall at inebraska.com wrote:
> Johannes - also on this - it is consistent.  It does it every time.  I'm 
> actually quite surprised I can Ctl-C out of ifconfig when I do it at the 
> command line . . . and interestingly enough, all dvb0_? devices are down.  So 
> it succeeds in bringing the device down on the last one - just hangs the 
> ifconfig.
> 
> The ifconfig I am using is part of the net-tools package from 
> 
> http://sites.inka.de/lina/linux/NetTools/
> 
> Version 1.60-r11

I don't think it's ifconfig's fault.

At the moment I have no clue. You could try to enable more debug
options in your kernel e.g. CONFIG_DEBUG_SLAB, CONFIG_DEBUG_SPINLOCK,
CONFIG_DEBUG_SPINLOCK_SLEEP, CONFIG_DEBUG_BUGVERBOSE,
CONFIG_DEBUG_STACKOVERFLOW, CONFIG_DEBUG_STACK_USAGE,
CONFIG_DEBUG_PAGEALLOC and see if that turns something up.

It would be nice if the kernel had some debug support for this,
so we could see who holds the mutex.

One thing you could do is to add some debug to
dmx_section_feed_release_filter, like:

        struct dvb_demux_filter *dvbdmxfilter = (struct dvb_demux_filter *) filter, *f;
        struct dvb_demux_feed *dvbdmxfeed = (struct dvb_demux_feed *) feed;
        struct dvb_demux *dvbdmx = dvbdmxfeed->demux;

        if (down_interruptible (&dvbdmx->mutex)) {
		printk("ARGH: %d\n", atomic_read(dvbdmx->mutex.count));
                return -ERESTARTSYS;
	}

If the mutex count is something != 0 or 1 the someone trashed
the memory. Otherwise someone likely hold the mutex and we
need to find out who. But before I put more work into this
I would like to hear that someone else can reproduce it.

Johannes




More information about the linux-dvb mailing list