Re: [Spca50x-devs] [BUG] kernel stall in spca50x driver
- Date: Fri, 20 Jan 2006 22:12:18 +0100
- From: thomas schorpp <t.schorpp@xxxxxx>
- Subject: Re: [Spca50x-devs] [BUG] kernel stall in spca50x driver
thomas schorpp wrote:
> thomas schorpp wrote:
>
>>hello,
>>
>>touching ekiga gui video sliders triggers spurious stalls of 2.6 kernels.
>>
>>any clue? it occours more often on touching the contrast slider.
>>color and hue seems not to be affected.
>>usb seems not affected - no stall until touching sliders.
>>
>>this will be hard to debug since there will be no kernel oops and
>>no logs on serial cable console too.
>>the kernel seems to lock up in a endless loop somewhere.
>>
>>2.6.15.0 K7 kernel.org
>>aiptek dv3500 webcam mode
>>ekiga cvs + libs cvs
>>
>>y
>>tom
>>
>
>
> any grabber triggers.
>
> the stall seems to occur if light gets too dark (black picture).
>
no also occurs on picture change.
> here are debug logs until deadlock (serial console gets no oops, even only once so far flashing keyboard lights):
>
>
> Jan 20 18:47:01 tom2 kernel: /usr/src/spca5xx-20060101/drivers/usb/spca5xx.c: [spca5xx_do_ioctl:4920] syncing to frame 0, grabstate = 2
ive tried this, cause i expected deadlock on FRAME_ERROR but didnt do any better,
deadlock should occur in the grabber thread firing the event instead(?):
PDEBUG (4, "syncing to frame %d, grabstate = %d", frame,
spca50x->frame[frame].grabstate);
switch (spca50x->frame[frame].grabstate)
{
case FRAME_UNUSED:
return -EINVAL;
case FRAME_ABORTING:
return -ENODEV;
case FRAME_READY:
case FRAME_GRABBING:
//redo: XXXX
if (!spca50x->dev)
return -EIO;
ret = wait_event_interruptible_timeout (spca50x->frame[frame].wq,
(spca50x->frame[frame].
grabstate == FRAME_DONE),
HZ*250);
if (ret)
return -EINTR;
PDEBUG (4, "Synch Ready on frame %d, grabstate = %d",
frame, spca50x->frame[frame].grabstate);
/* if (spca50x->frame[frame].grabstate == FRAME_ERROR) XXXX
{
goto redo;
}*/
/* Fallthrough.
* We have waited in state FRAME_GRABBING until it
* becomes FRAME_DONE, so now we can move along.
*/
case FRAME_DONE:
case FRAME_ERROR: XXX
/* Release the current frame. This means that it
* will be reused as soon as all other frames are
* full, so the app better be done with it quickly.
* Can this be avoided somehow?
*/
spca50x->frame[frame].grabstate = FRAME_UNUSED;
PDEBUG (4, "Release frame %d state %d\n", frame,spca50x->frame[frame].grabstate);
break;
} /* end switch */
return 0;
}
-------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc. Do you grep through log files
for problems? Stop! Download the new AJAX search engine that makes
searching your log files as easy as surfing the web. DOWNLOAD SPLUNK!
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=103432&bid=230486&dat=121642
_______________________________________________
Spca50x-devs mailing list
Spca50x-devs@xxxxxxxxxxxxxxxxxxxxx
https://lists.sourceforge.net/lists/listinfo/spca50x-devs