We have been looking more closely at the failure. Attached is a gdb log... As turns out, the failure is actually one level lower than
tcp_v4_destroy_sock() in __kfree_skb(). It attempts to call a destructor which has a
bogus address. The failing instruction is the call *(reg).
tcp_writequeue_purge(sk)-> tcp_free_skb(sk, skb)-> __kfree_skb()
The attached log has the sk and the "bad" skb as rendered by gdb.
--
George Anzinger george@mvista.com
High-res-timers: http://sourceforge.net/projects/high-res-timers/
Real time sched: http://sourceforge.net/projects/rtsched/
Preemption patch: http://www.kernel.org/pub/linux/kernel/people/rml