From: "kosaki (Motohiro KOSAKI)" Date: 2012-12-22T01:14:43+09:00 Subject: [ruby-core:51062] [ruby-trunk - Bug #7474][Feedback] I am getting undefined symbol: rb_enable_interrupt when running event machine Issue #7474 has been updated by kosaki (Motohiro KOSAKI). Status changed from Assigned to Feedback > It's been static since r32510. > I'm not sure if it is a part of public API. vm_core.h is definitely internal api place. Moreover rb_disable_interrupt() is wrong api and we may be removed later. There are two problems: 1) rb_disable_interrupt() .. rb_enable_interrupt() is expand to sigfillset(&mask); pthread_sigmask(SIG_SETMASK, &mask, NULL); ... sigemptyset(&mask); pthread_sigmask(SIG_SETMASK, &mask, NULL); See? rb_enable_interrupt() ignore old sigmask and set signal mask to empty. 2) thread unsafe pthread_sigmask() only change current thread sigmask. then other thread still be able to be interrupted by signal. then, this api only work single thread context. MRI only use this api when process creation time. So, I have a question. Why do event machine need rb_disable_interrupt()? If I understand correctly, event machine don't have single thread guarantee. ---------------------------------------- Bug #7474: I am getting undefined symbol: rb_enable_interrupt when running event machine https://bugs.ruby-lang.org/issues/7474#change-34989 Author: sam.saffron (Sam Saffron) Status: Feedback Priority: Normal Assignee: kosaki (Motohiro KOSAKI) Category: core Target version: 2.0.0 ruby -v: 2.0 I would like to cross report https://github.com/eventmachine/eventmachine/issues/389 Clearly this breakage could be "on purpose" not sure who should be fixing it. -- http://bugs.ruby-lang.org/