M
Matthew Bloch
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].
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].