Bug #7474

I am getting undefined symbol: rb_enable_interrupt when running event machine

Added by Sam Saffron over 1 year ago. Updated about 1 year ago.

[ruby-core:50352]
Status:Rejected
Priority:Normal
Assignee:Motohiro KOSAKI
Category:core
Target version:2.0.0
ruby -v:2.0 Backport:

Description

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.

History

#1 Updated by Nobuyoshi Nakada over 1 year ago

  • Category set to core
  • Status changed from Open to Assigned
  • Assignee set to Motohiro KOSAKI

It's been static since r32510.
I'm not sure if it is a part of public API.

#2 Updated by Motohiro KOSAKI over 1 year ago

  • Status changed from Assigned to Feedback

It's been static since r32510.
I'm not sure if it is a part of public API.

vmcore.h is definitely internal api place.
Moreover rb
disable_interrupt() is wrong api and we may be removed later.
There are two problems:

1)

rbdisableinterrupt()
..
rbenableinterrupt()

is expand to

sigfillset(&mask);
pthread_sigmask(SIG_SETMASK, &mask, NULL);

...

sigemptyset(&mask);
pthread_sigmask(SIG_SETMASK, &mask, NULL);

See? rbenableinterrupt() 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 rbdisableinterrupt()? If I understand correctly,
event machine don't have single thread guarantee.

#3 Updated by Motohiro KOSAKI about 1 year ago

  • Status changed from Feedback to Rejected

No response. I'll close this then.

Also available in: Atom PDF