I don't suppose anybody knows much about the differences in Fiber implementation, especially with respect to embedding, between the MRI 1.9.2 and 1.9.3 series? If so, would you be be happy to share some links and resources?
Over the last couple of days I've been looking at updating the version of MRI Ruby that I am embedding in my project. After a bit of work I've been able to get most of the 1.9.2 series working fine, including the latest, but my attempts to get things working with the 1.9.3 series have fallen flat.
For 1.9.3, I have concentrated on p0 and p392 for now. My app makes heavy use of coroutines (ie. Fibers), and tends to segfault at a similar point, with severe stack corruption (basically the top two stack frames have different values for "this" for the same object, essentially impossible). This occurs in the middle of a call back to the containing C++ code, during a coroutine. The complexity and corruption is making debugging rather difficult.
Whilst I'm leaving it for now (the latest 1.9.2 is sufficient for my purposes), I'd like to take a crack at it again in the future. Given the nature of the issue and the difficulty in debugging it, I'd like to be a bit more knowledgeable on the issues the next time I dive in and try to solve it.
If anyone can point to any links, discussion, or hints on any fundamental changes to Fibers between the 1.9.2 and 1.9.3 series, it would be much appreciated. I'm happy to do the legwork and the reading, but I'd be thrilled if anyone could throw some starting points for research or hints my way.
Darn- no responses. Well, worth a shot. Thanks to anyone who considered it and would have liked to help.
It's also possible my question is ill-formed- perhaps the issue isn't Fiber changes between 1.9.2 and 1.9.3, but something else that is interacting with my code in an undesirable way.
I'm sure I'll figure something out when the time comes.
Cheers,
Garth
ยทยทยท
On 16/03/13 21:39, Garthy D wrote:
Hi everyone,
I don't suppose anybody knows much about the differences in Fiber
implementation, especially with respect to embedding, between the MRI
1.9.2 and 1.9.3 series? If so, would you be be happy to share some links
and resources?
Over the last couple of days I've been looking at updating the version
of MRI Ruby that I am embedding in my project. After a bit of work I've
been able to get most of the 1.9.2 series working fine, including the
latest, but my attempts to get things working with the 1.9.3 series have
fallen flat.
For 1.9.3, I have concentrated on p0 and p392 for now. My app makes
heavy use of coroutines (ie. Fibers), and tends to segfault at a similar
point, with severe stack corruption (basically the top two stack frames
have different values for "this" for the same object, essentially
impossible). This occurs in the middle of a call back to the containing
C++ code, during a coroutine. The complexity and corruption is making
debugging rather difficult.
Whilst I'm leaving it for now (the latest 1.9.2 is sufficient for my
purposes), I'd like to take a crack at it again in the future. Given the
nature of the issue and the difficulty in debugging it, I'd like to be a
bit more knowledgeable on the issues the next time I dive in and try to
solve it.
If anyone can point to any links, discussion, or hints on any
fundamental changes to Fibers between the 1.9.2 and 1.9.3 series, it
would be much appreciated. I'm happy to do the legwork and the reading,
but I'd be thrilled if anyone could throw some starting points for
research or hints my way.