On Sun, 3 Jan 2010, Sean wrote: > Alan, > > I applied the patches and ran capture-example twice. On the second run > of capture-example a circular pointer popped up. I did not need to > remove the camera. Attached are the serial console capture as well as > the dmesg log in debug4.tar.gz. Did you want me to try to reproduce the > poison message? No. Among the things that patch did was to fix up the errors that caused the invalid pointers. Hence there should not have been any "poisoned hash" messages -- and indeed there weren't. The interesting part of the log is the error messages: ohci_hcd 0000:00:0b.0: Circular pointer #2b: 32 c6774800 c6542800 c6774800 ohci_hcd 0000:00:0b.0: Circular pointer #2b: 32 c6774800 c6542800 c6774800 ohci_hcd 0000:00:0b.0: Circular pointer #2b: 32 c6774800 c6542800 c6774800 ohci_hcd 0000:00:0b.0: Circular pointer #2b: 1 c6774040 c6542040 c6774040 ohci_hcd 0000:00:0b.0: Circular pointer #2b: 32 c6774800 c6542800 c6774800 ohci_hcd 0000:00:0b.0: Circular pointer #2b: 32 c6774800 c6542800 c6774800 ohci_hcd 0000:00:0b.0: Circular pointer #2b: 32 c6774800 c6542800 c6774800 ohci_hcd 0000:00:0b.0: Circular pointer #2b: 1 c6774040 c6542040 c6774040 ohci_hcd 0000:00:0b.0: Circular pointer #2b: 32 c6774800 c6542800 c6774800 ohci_hcd 0000:00:0b.0: Circular pointer #2b: 32 c6774800 c6542800 c6774800 ohci_hcd 0000:00:0b.0: Circular pointer #2b: 32 c6774800 c6542800 c6774800 ohci_hcd 0000:00:0b.0: Circular pointer #2b: 1 c6774040 c6542040 c6774040 ohci_hcd 0000:00:0b.0: Circular pointer #2b: 32 c6774800 c6542800 c6774800 ohci_hcd 0000:00:0b.0: Circular pointer #2b: 32 c6774800 c6542800 c6774800 ohci_hcd 0000:00:0b.0: Circular pointer #2b: 32 c6774800 c6542800 c6774800 ohci_hcd 0000:00:0b.0: Circular pointer #2b: 32 c6774800 c6542800 c6774800 ohci_hcd 0000:00:0b.0: Circular pointer #2b: 32 c6774800 c6542800 c6774800 ohci_hcd 0000:00:0b.0: Circular pointer #2b: 32 c6774800 c6542800 c6774800 There are two different hash chains here (32 and 1), but in each case see the message is #2b, never #2a. This means the problem occurs between the places where the #2a and #2b messages were inserted, i.e., in td_fill(). The hash chain contained a single TD and was fine to begin with; then another TD was added at the start of the chain and the pointer in the earlier TD (now at the second position in the chain) got messed up. For example, the error message in the first line above implies that originally the 32nd hash chain contained only the TD at c6542800 with its td_hash member set to NULL. But then c6774800 was added to the start of the chain, after which c6542800's td_hash pointed to c6774800. Try inserting a line saying: td_check(ohci, hash, "#2c"); two lines above the #2b line, i.e., just after the wmb(). That'll help narrow down the search for the bug. And by the way, you don't need to post your entire dmesg log. Just the portion containing the new debugging messages will be enough. Alan Stern -- To unsubscribe from this list: send the line "unsubscribe linux-media" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html