two bugs and a patch
Nickolai Zeldovich
kolya at mit.edu
Sun Jan 7 14:11:18 CET 2001
> Locking is needed when a thread can
> block in select or yield. In case you have multi-homed fileservers, the
> patch attached might help you.
It looks like this particular bug is still there:
Core was generated by `arlad'.
Program terminated with signal 11, Segmentation fault.
#0 0x8086cd1 in rxi_CheckCall (call=0xaaaaaaaa) at rx.c:3250
3250 struct rx_connection *conn = call->conn;
(gdb) bt
#0 0x8086cd1 in rxi_CheckCall (call=0xaaaaaaaa) at rx.c:3250
#1 0x80877c5 in rxi_ReapConnections () at rx.c:3610
#2 0x808b987 in rxevent_RaiseEvents (next=0x80f5f10) at rx_event.c:213
#3 0x808bdb0 in rxi_Listener () at rx_user.c:283
[...]
(gdb) fr 1
#1 0x80877c5 in rxi_ReapConnections () at rx.c:3610
3610 rxi_CheckCall(conn->call[i]);
(gdb) p *conn
$1 = {queue_item = {prev = 0xaaaaaaaa, next = 0xaaaaaaaa}, next = 0xaaaaaaaa,
[...]
FWIW, it seems like select() can potentially be called when in the
rxi_ReapConnections loop (rxi_ReapConnections calls rxi_AckAll which
can potentially send to the network, calling osi_NetSend).
-- kolya
More information about the Arla-drinkers
mailing list