@@ -92,6 +92,29 @@ namespace rubinius {
9292 InternalThread::stop (state);
9393 }
9494
95+ void SignalThread::print_machine_info (PrintFunction function) {
96+ function (" sysname: %s" , machine_info.sysname );
97+ function (" nodename: %s" , machine_info.nodename );
98+ function (" release: %s" , machine_info.release );
99+ function (" version: %s" , machine_info.version );
100+ function (" machine: %s" , machine_info.machine );
101+ }
102+
103+
104+ void SignalThread::print_process_info (PrintFunction function) {
105+ function (" user: %s" , signal_thread_->shared ().username .c_str ());
106+ function (" pid: %s" , signal_thread_->shared ().pid .c_str ());
107+ function (" program name: %s" , RBX_PROGRAM_NAME);
108+ function (" version: %s" , RBX_VERSION);
109+ function (" ruby version: %s" , RBX_RUBY_VERSION);
110+ function (" release date: %s" , RBX_RELEASE_DATE);
111+ function (" build revision: %s" , RBX_BUILD_REV);
112+ function (" llvm version: %s" , RBX_LLVM_VERSION);
113+ function (" jit status: %s" ,
114+ CBOOL (signal_thread_->shared ().env ()->state ->globals ().jit .get ()->enabled ())
115+ ? " enabled" : " disabled" );
116+ }
117+
95118 void SignalThread::run (STATE) {
96119#ifndef RBX_WINDOWS
97120 sigset_t set;
@@ -335,6 +358,8 @@ namespace rubinius {
335358 sleep (timeout);
336359 }
337360
361+ signal_thread_->shared ().env ()->atexit ();
362+
338363#define RBX_ABORT_CALLSTACK_SIZE 128
339364 void * callstack[RBX_ABORT_CALLSTACK_SIZE];
340365 int i, frames = backtrace (callstack, RBX_ABORT_CALLSTACK_SIZE);
@@ -343,25 +368,11 @@ namespace rubinius {
343368 logger::fatal (" The Rubinius process is aborting with signal: %s" ,
344369 rbx_signal_string (sig));
345370 logger::fatal (" --- begin system info ---" );
346- logger::fatal (" sysname: %s" , machine_info.sysname );
347- logger::fatal (" nodename: %s" , machine_info.nodename );
348- logger::fatal (" release: %s" , machine_info.release );
349- logger::fatal (" version: %s" , machine_info.version );
350- logger::fatal (" machine: %s" , machine_info.machine );
371+ signal_thread_->print_machine_info (logger::fatal);
351372 logger::fatal (" --- end system info ---" );
352373
353374 logger::fatal (" --- begin rubinius info ---" );
354- logger::fatal (" user: %s" , signal_thread_->shared ().username .c_str ());
355- logger::fatal (" pid: %s" , signal_thread_->shared ().pid .c_str ());
356- logger::fatal (" program name: %s" , RBX_PROGRAM_NAME);
357- logger::fatal (" version: %s" , RBX_VERSION);
358- logger::fatal (" ruby version: %s" , RBX_RUBY_VERSION);
359- logger::fatal (" release date: %s" , RBX_RELEASE_DATE);
360- logger::fatal (" build revision: %s" , RBX_BUILD_REV);
361- logger::fatal (" llvm version: %s" , RBX_LLVM_VERSION);
362- logger::fatal (" jit status: %s" ,
363- CBOOL (signal_thread_->shared ().env ()->state ->globals ().jit .get ()->enabled ())
364- ? " enabled" : " disabled" );
375+ signal_thread_->print_process_info (logger::fatal);
365376 logger::fatal (" --- end rubinius info ---" );
366377
367378 logger::fatal (" --- begin system backtrace ---" );
0 commit comments