You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
ExecuteSend does not allocate a frame on the interpreter stack when the receiver is an extension, but sends to extensions do allocate space on the C runtime stack. Therefore, infinite loops where the receiver is always an extension object will overflow the runtime stack without overflowing the interpret stack, leading to undetected stack overflow and a segfault.
We should detect such infinite loops and error with -floop-errors when possible. When it is not possible to detect such a loop, we should ensure that it at least does not crash the interpreter, by charging sends to extension objects for some nonzero amount of interpreter stack space as fuel.
The text was updated successfully, but these errors were encountered:
ExecuteSend
does not allocate a frame on the interpreter stack when the receiver is an extension, but sends to extensions do allocate space on the C runtime stack. Therefore, infinite loops where the receiver is always an extension object will overflow the runtime stack without overflowing the interpret stack, leading to undetected stack overflow and a segfault.We should detect such infinite loops and error with
-floop-errors
when possible. When it is not possible to detect such a loop, we should ensure that it at least does not crash the interpreter, by charging sends to extension objects for some nonzero amount of interpreter stack space as fuel.The text was updated successfully, but these errors were encountered: