[00:25:34] --- Simon Wilkinson has become available [00:47:48] --- Simon Wilkinson has left [01:09:21] --- squinney has become available [02:22:20] --- Simon Wilkinson has become available [02:34:46] --- dev-zero@jabber.org has left [03:07:20] --- dev-zero@jabber.org has become available [04:21:14] --- Simon Wilkinson has left [05:23:07] --- mvitale has become available [05:47:03] --- squinney has left [06:09:05] --- Simon Wilkinson has become available [06:49:20] --- Brandon Allbery has become available [07:15:10] --- kula has left [07:15:42] --- kula has become available [07:31:36] --- kula has left [07:31:39] --- kula has become available [07:34:29] --- kula has left [07:39:03] --- kula has become available [07:50:28] --- meffie has become available [07:57:32] --- deason has become available [08:48:09] --- Simon Wilkinson has left [08:55:22] Ah, I had turned off the "show me backtraces" option back when the freebsd kernel module did not have proper symbols and the backtrace tried to unwind the stack until the end of the mapping. [08:56:16] So, this allocation with non-sleepable lock held is in: osi_fbsd_Alloc afs_osi_Alloc rxevent_Post rxi_PostDelayedAckEvent rxi_ReceivePacket [09:07:36] is there a missing call to rxevent_Alloc() in there? [09:08:11] and the allocation is occurring because the freeEvents list is empty [09:08:44] There's not one printed on my console, but trying to back out the source corresponding to the offset in the object is not being very useful. I wonder if the trace is corrupted by compiler optimizations. [09:13:30] Disassembly of rxevent_Post does not seem to list any direct calls to afs_osi_Alloc, but does have a callq *%rax ... [09:13:39] Perhaps I should rebuild without optimizations. [09:20:22] I'm sure its a call to rxevent_alloc() which is optimized out. rxevent_alloc() will attempt to osi_Alloc() 'allocUnit' rxevent objects and put the rest on the list. [09:21:34] Seems likely. [09:23:55] which of the three calls to rxi_PostDelayedAckPacket is the one in question? [09:25:43] I suspect you have another optimization of rxi_ReceivePacket calling rxi_ReceiveDataPacket [09:26:24] Not sure yet. [09:35:37] Well, it's one of the two rxi_PostDelayedAckEvent calls at the haveLast && !(flags & RX_CLIENT_INITIATED) conditional. I think the 'else' block, but am not 100% sure. [09:39:42] --- meffie has left [09:42:59] --- mmeffie has become available [09:45:34] its not going to matter. [09:49:35] we don't think we can drop the call->lock in rxi_PostDelayedAckEvent(). The question is going to be how do we ensure that the freeEventList does not become empty [09:50:10] s/we don't/ I don't [09:50:40] I would like Simon to look at this when he is back from his travels [09:51:05] looking at the git history this condition is not new [09:54:09] Should I send mail/create a ticket as a reminder? [09:54:17] yes please [09:54:49] Preference for which? [09:55:03] please create a ticket in RT [09:58:09] This problem is not specific to rxi_PostDelayedAck. All of the callers to rxevent_Post() for a call or conn event will have the same problem [09:59:22] Yeah, looking at the console logs, things are subtly different. [09:59:38] I will paste jabber logs into the ticket. [09:59:44] if it isn't safe to call osi_Alloc() on FreeBSD while a lock is held, that is a problem that will require a design change [10:00:31] in the end we need to make sure that a pool of rxevent objects are always free [10:00:34] We may be able to use a different allocator backend, I'd have to look. [10:00:58] or that [10:10:25] (131485) [10:11:30] --- dev-zero@jabber.org has left [11:52:24] --- kaduk@mit.edu/barnowl has left [11:53:35] --- kaduk@mit.edu/barnowl has become available [12:21:30] --- mmeffie has left [13:38:57] --- mmeffie has become available [13:39:27] --- mmeffie has left [13:39:42] --- mmeffie has become available [14:07:36] --- dev-zero@jabber.org has become available [14:32:51] --- Brandon Allbery has left [14:37:59] --- mdionne has become available [15:18:31] --- mvitale has left [15:34:02] --- CUDave has left: Disconnected [15:55:51] --- mmeffie has left [16:45:05] --- dev-zero@jabber.org has left [16:57:10] --- deason has left [17:23:35] --- CUDave has become available [17:36:00] --- mdionne has left [19:34:20] --- mdionne has become available [19:36:13] --- mdionne has left [22:06:21] --- dev-zero@jabber.org has become available [22:07:20] --- dev-zero@jabber.org has left [22:07:21] --- dev-zero@jabber.org has become available [23:27:21] --- dev-zero@jabber.org has left