Bug #15844
closedVM has trouble releasing memory (?) on NoMethodError
Description
When the test case is run, the process goes haywire. I observe RSS bouncing around, and trending upwards. CPU on the process is at 100%.
The test case is a partial implementation of a binary tree which is also a doubly linked list. I chopped it down as far as I could.
The issue is triggered by a calling a non-existent method on the Tree object. The test case only has 100 nodes -- it should be instantaneous. I kill it after some 6+ minutes with RSS hitting upwards of 5GB.
I am working in 2.6.3. Duplicated in 2.5.3 and 2.4.3 (with some code modifications)
Files
Updated by alangano (Alan Gano) over 5 years ago
- Subject changed from VM has trouble releasing memory (?)` on NoMethodError to VM has trouble releasing memory (?) on NoMethodError
Updated by nobu (Nobuyoshi Nakada) over 5 years ago
- Status changed from Open to Rejected
On exiting by an exception, ruby tries to print the exception and NoMethodError
shows its receiver.
Your Node
is a recursive construction, so it increases exponentially by the size.
Define your own inspect
method not to include @left
and @right
members.
Updated by duerst (Martin Dürst) over 5 years ago
nobu (Nobuyoshi Nakada) wrote:
On exiting by an exception, ruby tries to print the exception and
NoMethodError
shows its receiver.
YourNode
is a recursive construction, so it increases exponentially by the size.
Recursion should not be a problem. Cycles definitely will be a problem.
Define your own
inspect
method not to include@left
and@right
members.
This is definitely the right way to go. But would it make sense to wrap the error output in a timeout, to make it easier to debug such problems in the field? I can create a feature for this.