From: Matthew Bloch Date: 2010-04-14T23:54:05+09:00 Subject: Backtrace hopping between threads ? Hello, I just got this backtrace and don't understand something about it: F, [2010-04-14T14:19:11.039347 #28597] FATAL -- : can't clone NilClass (SystemExit) /usr/lib/ruby/1.8/rexml/text.rb:311:in `recvfrom' /usr/lib/mauvealert/lib/mauve/server.rb:158:in `receive_waiting_packets' /usr/lib/mauvealert/lib/mauve/server.rb:104:in `run' /usr/lib/mauvealert/lib/mauve/server.rb:91:in `loop' /usr/lib/mauvealert/lib/mauve/server.rb:91:in `run' /usr/lib/mauvealert/bin/mauveserver:32 /usr/lib/mauvealert/bin/mauveserver:30:in `loop' /usr/lib/mauvealert/bin/mauveserver:30 /usr/lib/mauvealert/mauve_starter.rb:22:in `load' /usr/lib/mauvealert/mauve_starter.rb:22 Rather, I understand the exception, the line in server.rb:158 is this: packets = [@socket.recvfrom(65535)] @socket is just a UDPServer socket, and I'm wanting to read raw data. So I don't understand how the backtrace includes a call to REXML. Another Thread in the program is processing XMPP messages, that's the only code path that would use REXML, so I assume there is a bug in that part of the code, somehow the backtrace pops out in another Thread, and I've lost the original context. I don't have Thread.abort_on_exception set. Is this a backtrace that appears to "cross threads" or is there some legitimate reason a socket I/O call could call REXML? This is on Debian/lenny's ruby, 1.8.7 (2009-06-12 patchlevel 174) [x86_64-linux]. -- Matthew