GemTalk / Sparkle

MIT License
11 stars 5 forks source link

Debugger hangs when inspecting contents - possible too large collection #60

Closed LisaAlmarode closed 3 years ago

LisaAlmarode commented 3 years ago

I put a halt in a method, and then attempted to examine the collection. When I click on the little arrows of any of the far left objects, nothing happens. I believe it's trying to do something. There are 244 objects in the collection.

image

I wait for a few minutes, then log out, and I get a Broken Promise exception which (sounds very sad).

image

kurtkilpela commented 3 years ago

Martin and I ran into an issue that sounds like what you hit. There is a situation where RSR can deadlock due to an interaction w/ Ephemeron finalization. The deadlock occurs in a critical section which is growing a Dictionary. The Dictionary growth is enough to trigger the GC causing the issue. There is a ticket over in the RSR project to work around this problem. See: https://github.com/GemTalk/RemoteServiceReplication/issues/108

kurtkilpela commented 3 years ago

Note, the only limit on size of collection should be memory. RSR doesn't have an explicit upper-bound on size of an object.

martinmcclure commented 3 years ago

If this was the Ephemeron deadlock (which seems likely), Allen merged the prerequisite fix to the base today -- http://kermit.gemtalksystems.com/bug?bug=49415. RSR work is still needed, as Kurt indicated.

martinmcclure commented 3 years ago

I think this is fixed, at least I can inspect a 10000-element Array in the debugger without problem. Please re-open if the GroverCollection example still fails.

I tested with this code:

| array | 
array := (1 to: 1000) collect: [:index | 'Element ' , index printString ].
^ array at: 0.