M
Matthew Bloch
Here's what I see in my program, two threads stuck on writing to the
same logger:
--> #0 MonitorMixin.mon_acquire(queue#Array)
at line /usr/lib/ruby/1.8/monitor.rb:286
#1 MonitorMixin.mon_enter at line /usr/lib/ruby/1.8/monitor.rb:214
#2 MonitorMixin.synchronize at line /usr/lib/ruby/1.8/monitor.rb:240
#3 Logger::LogDevice.write(message#String)
at line /usr/lib/ruby/1.8/logger.rb:496
#4 Logger.initialize(severity#Fixnum, message#String,
progname#NilClass)
at line /usr/lib/ruby/1.8/logger.rb:327
#5 Logger.debug(progname#String) at
line /usr/lib/ruby/1.8/logger.rb:348
#6 Mauve::Alert.inspect(update#Mauve:
roto::AlertUp...)
at line /usr/lib/mauvealert/lib/mauve/alert.rb:322
--> #0 Debugger.interrupt_last
at
line /usr/lib/ruby/gems/1.8/gems/ruby-debug-base-0.10.3/lib/ruby-debug-base.rb:89
#1 at
line /usr/lib/ruby/gems/1.8/gems/ruby-debug-0.10.3/bin/rdebug:351
#2 MonitorMixin.write at line /usr/lib/ruby/1.8/logger.rb:504
#3 Logger::LogDevice.write(message#String)
at line /usr/lib/ruby/1.8/logger.rb:496
#4 MonitorMixin.write at line /usr/lib/ruby/1.8/logger.rb:504
#5 Logger::LogDevice.write(message#String)
at line /usr/lib/ruby/1.8/logger.rb:496
#6 Logger.initialize(severity#Fixnum, message#String,
progname#NilClass)
at line /usr/lib/ruby/1.8/logger.rb:327
#7 Logger.debug(progname#String) at
line /usr/lib/ruby/1.8/logger.rb:348
#8 DataMapper::Adapters:
ataObjectsAdapter.execute_reader
at
line /usr/lib/mauvealert/external/dm-core-0.10.2/lib/dm-core/adapters/data_objects_adapter.rb:140
....
Restarting the program from within rdebug, and re-interrupting leaves
these backtraces at the same point.
The most likely explanation is that the logger's output device (@dev) is
blocking for *minutes* at a time, but I've no idea why that might be
when it's just a file.
Will dive in and add some instrumentation / timeouts around that write
statement to see if I can work out why it is behaving that way.
same logger:
--> #0 MonitorMixin.mon_acquire(queue#Array)
at line /usr/lib/ruby/1.8/monitor.rb:286
#1 MonitorMixin.mon_enter at line /usr/lib/ruby/1.8/monitor.rb:214
#2 MonitorMixin.synchronize at line /usr/lib/ruby/1.8/monitor.rb:240
#3 Logger::LogDevice.write(message#String)
at line /usr/lib/ruby/1.8/logger.rb:496
#4 Logger.initialize(severity#Fixnum, message#String,
progname#NilClass)
at line /usr/lib/ruby/1.8/logger.rb:327
#5 Logger.debug(progname#String) at
line /usr/lib/ruby/1.8/logger.rb:348
#6 Mauve::Alert.inspect(update#Mauve:
at line /usr/lib/mauvealert/lib/mauve/alert.rb:322
--> #0 Debugger.interrupt_last
at
line /usr/lib/ruby/gems/1.8/gems/ruby-debug-base-0.10.3/lib/ruby-debug-base.rb:89
#1 at
line /usr/lib/ruby/gems/1.8/gems/ruby-debug-0.10.3/bin/rdebug:351
#2 MonitorMixin.write at line /usr/lib/ruby/1.8/logger.rb:504
#3 Logger::LogDevice.write(message#String)
at line /usr/lib/ruby/1.8/logger.rb:496
#4 MonitorMixin.write at line /usr/lib/ruby/1.8/logger.rb:504
#5 Logger::LogDevice.write(message#String)
at line /usr/lib/ruby/1.8/logger.rb:496
#6 Logger.initialize(severity#Fixnum, message#String,
progname#NilClass)
at line /usr/lib/ruby/1.8/logger.rb:327
#7 Logger.debug(progname#String) at
line /usr/lib/ruby/1.8/logger.rb:348
#8 DataMapper::Adapters:
at
line /usr/lib/mauvealert/external/dm-core-0.10.2/lib/dm-core/adapters/data_objects_adapter.rb:140
....
Restarting the program from within rdebug, and re-interrupting leaves
these backtraces at the same point.
The most likely explanation is that the logger's output device (@dev) is
blocking for *minutes* at a time, but I've no idea why that might be
when it's just a file.
Will dive in and add some instrumentation / timeouts around that write
statement to see if I can work out why it is behaving that way.