On Tue, 13 Aug 2013 11:05:01 +0200 (CEST) Harald Barth <h...@kth.se> wrote:
> 2002 for (queue_Scan(&rx_incomingCallQueue, tcall, ncall, > rx_call)) { > 2003 service = tcall->conn->service; > 2004 if (!QuotaOK(service)) { > 2005 continue; > 2006 } > (gdb) > > queue_Scan seems to be a hideous macro. So some assistance > appreciated. This should expand to something like for (tcall = ((struct rx_queue*)(&rx_incomingCallQueue))->next, ncall = ((struct rx_queue*)tcall)->next; tcall != &rx_incomingCallQueue; tcall = ncall, ncall = ((struct rx_queue*)tcall)->next) So I assume it's that last ncall assignment that's dereferencing a NULL tcall. tcall shouldn't be able to be NULL there; even if we're at the end of the queue, it should be &incomingCallQueue. So, traverse incomingCallQueue and see if one of the pointers is NULL. I thought there was a bug regarding this, but I must be thinking of 339438c8473110bebdd31b23706e2e387560723f. That commit is a bit curious wrt this, though... maybe it is possible that a NULL gets on the queue somehow. -- Andrew Deason adea...@sinenomine.net _______________________________________________ OpenAFS-devel mailing list OpenAFS-devel@openafs.org https://lists.openafs.org/mailman/listinfo/openafs-devel