feenkcom / gt4gemstone-old

The Glamorous Toolkit for remote work with Gemstone/S
MIT License
13 stars 5 forks source link

hangs (hot) when selecting large character string temps in debugger ... #47

Open dalehenrich opened 7 years ago

dalehenrich commented 7 years ago

I actually cannot tell how big the string is .. yet, but I assume that it is large, because I ran out of memory in the gem when I first tried selecting auditResult ... I've tried trimming the size to 2000 characters and it still hangs ...

image

I also bumped the temp obj cache to a large size (2G) ... hmmmm now I see that pharo is running hot ...

dalehenrich commented 7 years ago

The original auditResult string is 1092571 characters in size ..

dalehenrich commented 7 years ago

Looks like gt4gemstone might be in an infinite loop for some kind or error. Here's as much of the pharo stack that gets copied when I interrupt the client:

GsGciOopType>>asInteger
[ :lib | 
| result address |
lib apiGciSetSessionId: gciSessionNumber.
address := lib addressOfArrayOfOopsForGsOopTypes: arrayOfGsOopTypes.
result := lib
    apiGciPerformNoDebug_: receiverOopType
    a: selector asString
    a: address asInteger
    a: arrayOfGsOopTypes size
    a: flags
    a: environmentId.
^ result asInteger = 20
    ifTrue: [ nil gciResultToGsOopType: self ]
    ifFalse: [ result gciResultToGsOopType: self ] ] in GsGciSession>>gciPerform:selector:args:flags:environmentId: in Block: [ :lib | ...
[ aBlock value: self ] in GsGci331xLibrary(GsGci32xLibrary)>>critical: in Block: [ aBlock value: self ]
BlockClosure>>ensure:
[ owner := activeProcess.
aBlock
    ensure: [ owner := nil ] ] in Mutex>>critical: in Block: [ owner := activeProcess....
[ caught := true.
self wait.
blockValue := mutuallyExcludedBlock value ] in Semaphore>>critical: in Block: [ caught := true....
BlockClosure>>ensure:
Semaphore>>critical:
Mutex>>critical:
GsGci331xLibrary(GsGci32xLibrary)>>critical:
GsGciSession>>gciPerform:selector:args:flags:environmentId:
GsGciSession>>send:to:withArgs:
GtGsBareClient(TDMinimalClient)>>send:to:withArgs:
GtGsDebuggerSessionProxy>>initializeForGemstoneClient:andNotification:
GtGsDebuggerSessionProxy class>>forClient:andNotification:in:
GtGsBareClient(GtGsMinimalClient)>>debuggerRequested:
TDRuntimeError>>defaultAction
UndefinedObject>>handleSignal:
TDRuntimeError(Exception)>>signal
TDErrorNotification(TDNotification)>>defaultRuntimeError
TDErrorNotification(TDNotification)>>defaultAction
UndefinedObject>>handleSignal:
TDErrorNotification(Exception)>>signal
GsGci32xErrSType>>asLocalObjectFor:
GsGci32xErrSType>>asLocalObjectFor:ifNotConverted:
GsGciSession>>send:to:withArgs:
GtGsBareClient(TDMinimalClient)>>send:to:withArgs:
GtGsDebuggerSessionProxy>>initializeForGemstoneClient:andNotification:
GtGsDebuggerSessionProxy class>>forClient:andNotification:in:
GtGsBareClient(GtGsMinimalClient)>>debuggerRequested:
dalehenrich commented 7 years ago

It is entirely possible that the original server-side auditResult string is a Unicode32 string. We are auditing unicode indexes with randomly generated strings ... got to go to plan B right now, because I need to see the audit result string...

dalehenrich commented 7 years ago

This is the output that I get from topaz (truncated at some point), but it doesn't look like unicode is involved:

object [80301057] of class SmallFloat, equality index <c2.c3.theNumber> [78526465], path term <theNumber> [158226177], depList [79276801]
    --  DependencyList has incorrect ref count 2 for occurrences 1
object [82331649] of class Float, equality index <c2.c3.theNumber> [78526465], path term <theNumber> [158226177], depList [79276801]
    --  DependencyList has incorrect ref count 2 for occurrences 1
object [81812225] of class Float, equality index <c2.c3.theNumber> [78526465], path term <theNumber> [158226177], depList [79276801]
    --  DependencyList has incorrect ref count 2 for occurrences 1
object [82790657] of class Float, equality index <c2.c3.theNumber> [78526465], path term <theNumber> [158226177], depList [79276801]
    --  DependencyList has incorrect ref count 2 for occurrences 1
object [79377921] of class Float, equality index <c2.c3.theNumber> [78526465], path term <theNumber> [158226177], depList [79276801]
    --  DependencyList has incorrect ref count 2 for occurrences 1
object [79573505] of class Float, equality index <c2.c3.theNumber> [78526465], path term <theNumber> [158226177], depList [79276801]
    --  DependencyList has incorrect ref count 2 for occurrences 1
object [80158209] of class Float, equality index <c2.c3.theNumber> [78526465], path term <theNumber> [158226177], depList [79276801]
    --  DependencyList has incorrect ref count 2 for occurrences 1
object [82263553] of class Float, equality index <c2.c3.theNumber> [78526465], path term <theNumber> [158226177], depList [79276801]
    --  DependencyList has incorrect ref count 2 for occurrences 1
object [81823489] of class Float, equality index <c2.c3.theNumber> [78526465], path term <theNumber> [158226177], depList [79276801]
    --  DependencyList has incorrect ref count 2 for occurrences 1
object [83309057] of class Float, equality index <c2.c3.theNumber> [78526465], path term <theNumber> [158226177], depList [79276801]
    --  DependencyList has incorrect ref count 2 for occurrences 1
object [80886273] of class Float, equality index <c2.c3.theNumber> [78526465], path term <theNumber> [158226177], depList [79276801]
    --  DependencyList has incorrect ref count 2 for occurrences 1
object [79372801] of class Float, equality index <c2.c3.theNumber> [78526465], path term <theNumber> [158226177], depList [79276801]
    --  DependencyList has incorrect ref count 2 for occurrences 1
object [80456193] of class Float, equality index <c2.c3.theNumber> [78526465], path term <theNumber> [158226177], depList [79276801]
    --  DependencyList has incorrect ref count 2 for occurrences 1
object [80915713] of class Float, equality index <c2.c3.theNumber> [78526465], path term <theNumber> [158226177], depList [79276801]
    --  DependencyList has incorrect ref count 2 for occurrences 1
object [79512321] of class SmallFloat, equality index <c2.c3.theNumber> [78526465], path term <theNumber> [158226177], depList [79276801]
    --  DependencyList has incorrect ref count 2 for occurrences 1
object [79068161] of class SmallFloat, equality index <c2.c3.theNumber> [78526465], path term <theNumber> [158226177], depList [79276801]
    --  DependencyList has incorrect ref count 2 for occurrences 1
object [82519809] of class SmallFloat, equality index <c2.c3.theNumber> [78526465], path term <theNumber> [158226177], depList [79276801]
    --  DependencyList has incorrect ref count 2 for occurrences 1
object [80452097] of class SmallFloat, equality index <c2.c3.theNumber> [78526465], path term <theNumber> [158226177], depList [79276801]
    --  DependencyList has incorrect ref count 2 for occurrences 1
object [82239233] of class SmallFloat, equality index <c2.c3.theNumber> [78526465], path term <theNumber> [158226177], depList [79276801]
    --  DependencyList has incorrect ref count 2 for occurrences 1
object [82453505] of class SmallFloat, equality index <c2.c3.theNumber> [78526465], path term <theNumber> [158226177], depList [79276801]
    --  DependencyList has incorrect ref count 2 for occurrences 1
object [82155265] of class SmallFloat, equality index <c2.c3.theNumber> [78526465], path term <theNumber> [158226177], depList [79276801]
    --  DependencyList has incorrect ref count 2 for occurrences 1
object [82110465] of class SmallFloat, equality index <c2.c3.theNumber> [78526465], path term <theNumber> [158226177], depList [79276801]
    --  DependencyList has incorrect ref count 2 for occurrences 1
object [79662593] of class SmallFloat, equality index <c2.c3.theNumber> [78526465], path term <theNumber> [158226177], depList [79276801]
    --  DependencyList has incorrect ref count 2 for occurrences 1
object [79774209] of class SmallFloat, equality index <c2.c3.theNumber> [78526465], path term <theNumber> [158226177], depList [79276801]
    --  DependencyList has incorrect ref count 2 for occurrences 1
object [79623937] of class SmallFloat, equality index <c2.c3.theNumber> [78526465], path term <theNumber> [158226177], depList [79276801]
    --  DependencyList has incorrect ref count 2 for occurrences 1
object [79971329] of class SmallFloat, equality index <c2.c3.theNumber> [78526465], path term <theNumber> [158226177], depList [79276801]
    --  DependencyList has incorrect ref count 2 for occurrences 1
object [79278337] of class SmallFloat, equality index <c2.c3.theNumber> [78526465], path term <theNumber> [158226177], depList [79276801]
    --  DependencyList has incorrect ref count 2 for occurrences 1
object [80454145] of class SmallFloat, equality index <c2.c3.theNumber> [78526465], path term <theNumber> [158226177], depList [79276801]
    --  DependencyList has incorrect ref count 2 for occurrences 1
object [84365569] of class SmallFloat, equality index <c2.c3.theNumber> [78526465], path term <theNumber> [158226177], depList [79276801]
    --  DependencyList has incorrect ref count 2 for occurrences 1
object [77445121] of class SmallFloat, equality index <c2.c3.theNumber> [78526465], path term <theNumber> [158226177], depList [79276801]
    --  DependencyList has incorrect ref count 2 for occurrences 1
object [81962241] of class SmallFloat, equality index <c2.c3.theNumber> [78526465], path term <theNumber> [158226177], depList [79276801]
    --  DependencyList has incorrect ref count 2 for occurrences 1
object [82648321] of class SmallFloat, equality index <c2.c3.theNumber> [78526465], path term <theNumber> [158226177], depList [79276801]
    --  DependencyList has incorrect ref count 2 for occurrences 1
object [82879489] of class SmallFloat, equality index <c2.c3.theNumber> [78526465], path term <theNumber> [158226177], depList [79276801]
    --  DependencyList has incorrect ref count 2 for occurrences 1
object [81358081] of class SmallFloat, equality index <c2.c3.theNumber> [78526465], path term <theNumber> [158226177], depList [79276801]
    --  DependencyList has incorrect ref count 2 for occurrences 1
object [80965889] of class SmallFloat, equality index <c2.c3.theNumber> [78526465], path term <theNumber> [158226177], depList [79276801]
    --  DependencyList has incorrect ref count 2 for occurrences 1
object [77981185] of class SmallFloat, equality index <c2.c3.theNumber> [78526465], path term <theNumber> [158226177], depList [79276801]
    --  DependencyList has incorrect ref count 2 for occurrences 1
object [80576257] of class SmallFloat, equality index <c2.c3.theNumber> [78526465], path term <theNumber> [158226177], depList [79276801]
    --  DependencyList has incorrect ref count 2 for occurrences 1
object [82319617] of class SmallFloat, equality index <c2.c3.theNumber> [78526465], path term <theNumber> [158226177], depList [79276801]
    --  DependencyList has incorrect ref count 2 for occurrences 1
object [83205633] of class SmallFloat, equality index <c2.c3.theNumber> [78526465], path term <theNumber> [158226177], depList [79276801]
    --  DependencyList has incorrect ref count 2 for occurrences 1
object [81624577] of class SmallFloat, equality index <c2.c3.theNumber> [78526465], path term <theNumber> [158226177], depList [79276801]
    --  DependencyList has incorrect ref count 2 for occurrences 1
object [83486465] of class SmallFloat, equality index <c2.c3.theNumber> [78526465], path term <theNumber> [158226177], depList [79276801]
    --  DependencyList has incorrect ref count 2 for occurrences 1
object [83665921] of class SmallFloat, equality index <c2.c3.theNumber> [78526465], path term <theNumber> [158226177], depList [79276801]
    --  DependencyList has incorrect ref count 2 for occurrences 1
object [78141441] of class Float, equality index <c2.c3.theNumber> [78526465], path term <theNumber> [158226177], depList [79276801]
    --  DependencyList has incorrect ref count 2 for occurrences 1
object [81070081] of class Float, equality index <c2.c3.theNumber> [78526465], path term <theNumber> [158226177], depList [79276801]
    --  DependencyList has incorrect ref count 2 for occurrences 1
object [79341313] of class Float, equality index <c2.c3.theNumber> [78526465], path term <theNumber> [158226177], depList [79276801]
    --  DependencyList has incorrect ref count 2 for occurrences 1
object [82661377] of class Float, equality index <c2.c3.theNumber> [78526465], path term <theNumber> [158226177], depList [79276801]
    --  DependencyList has incorrect ref count 2 for occurrences 1
object [79607809] of class Float, equality index <c2.c3.theNumber> [78526465], path term <theNumber> [158226177], depList [79276801]
    --  DependencyList has incorrect ref count 2 for occurrences 1
object [82741505] of class Float, equality index <c2.c3.theNumber> [78526465], path term <theNumber> [158226177], depList [79276801]
    --  DependencyList has incorrect ref count 2 for occurrences 1
object [79713537] of class Float, equality index <c2.c3.theNumber> [78526465], path term <theNumber> [158226177], depList [79276801]
    --  DependencyList has incorrect ref count 2 for occurrences 1
object [79598849] of class Float, equality index <c2.c3.theNumber> [78526465], path term <theNumber> [158226177], depList [79276801]
    --  DependencyList has incorrect ref count 2 for occurrences 1
object [83109889] of class Float, equality index <c2.c3.theNumber> [78526465], path term <theNumber> [158226177], depList [79276801]
    --  DependencyList has incorrect ref count 2 for occurrences 1
object [78954753] of class Float, equality index <c2.c3.theNumber> [78526465], path term <theNumber> [158226177], depList [79276801]
    --  DependencyList has incorrect ref count 2 for occurrences 1
object [77929985] of class Float, equality index <c2.c3.theNumber> [78526465], path term <theNumber> [158226177], depList [79276801]
    --  DependencyList has incorrect ref count 2 for occurrences 1
object [78158337] of class Float, equality index <c2.c3.theNumber> [78526465], path term <theNumber> [158226177], depList [79276801]
    --  DependencyList has incorrect ref count 2 for occurrences 1
object [83338753] of class Float, equality index <c2.c3.theNumber> [78526465], path term <theNumber> [158226177], depList [79276801]
    --  DependencyList has incorrect ref count 2 for occurrences 1
object [83274241] of class Float, equality index <c2.c3.theNumber> [78526465], path term <theNumber> [158226177], depList [79276801]
    --  DependencyList has incorrect ref count 2 for occurrences 1
object [80307457] of class Float, equality index <c2.c3.theNumber> [78526465], path term <theNumber> [158226177], depList [79276801]
    --  DependencyList has incorrect ref count 2 for occurrences 1
object [82703105] of class Float, equality index <c2.c3.theNumber> [78526465], path term <theNumber> [158226177], depList [79276801]
    --  DependencyList has incorrect ref count 2 for occurrences 1
object [81395969] of class Float, equality index <c2.c3.theNumber> [78526465], path term <theNumber> [158226177], depList [79276801]
    --  DependencyList has incorrect ref count 2 for occurrences 1
object [83208449] of class Float, equality index <c2.c3.theNumber> [78526465], path term <theNumber> [158226177], depList [79276801]
    --  DependencyList has incorrect ref count 2 for occurrences 1
object [80755201] of class Float, equality index <c2.c3.theNumber> [78526465], path term <theNumber> [158226177], depList [79276801]
    --  DependencyList has incorrect ref count 2 for occurrences 1
object [81099265] of class Float, equality index <c2.c3.theNumber> [78526465], path term <theNumber> [158226177], depList [79276801]
    --  DependencyList has incorrect ref count 2 for occurrences 1
object [77930241] of class Float, equality index <c2.c3.theNumber> [78526465], path term <theNumber> [158226177], depList [79276801]
    --  DependencyList has incorrect ref count 2 for occurrences 1
object [80661505] of class Float, equality index <c2.c3.theNumber> [78526465], path term <theNumber> [158226177], depList [79276801]
    --  DependencyList has incorrect ref count 2 for occurrences 1
object [81414913] of class Float, equality index <c2.c3.theNumber> [78526465], path term <theNumber> [158226177], depList [79276801]
    --  DependencyList has incorrect ref count 2 for occurrences 1
object [83849985] of class Float, equality index <c2.c3.theNumber> [78526465], path term <theNumber> [158226177], depList [79276801]
    --  DependencyList has incorrect ref count 2 for occurrences 1
object [81919233] of class Float, equality index <c2.c3.theNumber> [78526465], path term <theNumber> [158226177], depList [79276801]
    --  DependencyList has incorrect ref count 2 for occurrences 1
object [83286017] of class Float, equality index <c2.c3.theNumber> [78526465], path term <theNumber> [158226177], depList [79276801]
    --  DependencyList has incorrect ref count 2 for occurrences 1
object [83440385] of class Float, equality index <c2.c3.theNumber> [78526465], path term <theNumber> [158226177], depList [79276801]
    --  DependencyList has incorrect ref count 2 for occurrences 1
object [83543041] of class Float, equality index <c2.c3.theNumber> [78526465], path term <theNumber> [158226177], depList [79276801]
    --  DependencyList has incorrect ref count 2 for occurrences 1
object [83102721] of class SmallFloat, equality index <c2.c3.theNumber> [78526465], path term <theNumber> [158226177], depList [79276801]
    --  DependencyList has incorrect ref count 2 for occurrences 1
object [79018241] of class SmallFloat, equality index <c2.c3.theNumber> [78526465], path term <theNumber> [158226177], depList [79276801]
    --  DependencyList has incorrect ref count 2 for occurrences 1
object [84022017] of class SmallFloat, equality index <c2.c3.theNumber> [78526465], path term <theNumber> [158226177], depList [79276801]
    --  DependencyList has incorrect ref count 2 for occurrences 1
object [78177281] of class SmallFloat, equality index <c2.c3.theNumber> [78526465], path term <theNumber> [158226177], depList [79276801]
    --  DependencyList has incorrect ref count 2 for occurrences 1
object [80769025] of class SmallFloat, equality index <c2.c3.theNumber> [78526465], path term <theNumber> [158226177], depList [79276801]
    --  DependencyList has incorrect ref count 2 for occurrences 1
object [81004801] of class SmallFloat, equality index <c2.c3.theNumber> [78526465], path term <theNumber> [158226177], depList [79276801]
    --  DependencyList has incorrect ref count 2 for occurrences 1
object [78011137] of class SmallFloat, equality index <c2.c3.theNumber> [78526465], path term <theNumber> [158226177], depList [79276801]
    --  DependencyList has incorrect ref count 2 for occurrences 1
object [81076481] of class SmallFloat, equality index <c2.c3.theNumber> [78526465], path term <theNumber> [158226177], depList [79276801]
    --  DependencyList has incorrect ref count 2 for occurrences 1
object [80931329] of class SmallFloat, equality index <c2.c3.theNumber> [78526465], path term <theNumber> [158226177], depList [79276801]
    --  DependencyList has incorrect ref count 2 for occurrences 1
object [80487937] of class SmallFloat, equality index <c2.c3.theNumber> [78526465], path term <theNumber> [158226177], depList [79276801]
    --  DependencyList has incorrect ref count 2 for occurrences 1
object [80847873] of class SmallFloat, equality index <c2.c3.theNumber> [78526465], path term <theNumber> [158226177], depList [79276801]
    --  DependencyList has incorrect ref count 2 for occurrences 1
object [81431553] of class SmallFloat, equality index <c2.c3.theNumber> [78526465], path term <theNumber> [158226177], depList [79276801]
    --  DependencyList has incorrect ref count 2 for occurrences 1
object [77425153] of class SmallFloat, equality index <c2.c3.theNumber> [78526465], path term <theNumber> [158226177], depList [79276801]
    --  DependencyList has incorrect ref count 2 for occurrences 1
object [79784961] of class SmallFloat, equality index <c2.c3.theNumber> [78526465], path term <theNumber> [158226177], depList [79276801]
    --  DependencyList has incorrect ref count 2 for occurrences 1
object [79020801] of class SmallFloat, equality index <c2.c3.theNumber> [78526465], path term <theNumber> [158226177], depList [79276801]
    --  DependencyList has incorrect ref count 2 for occurrences 1
object [78902273] of class SmallFloat, equality index <c2.c3.theNumber> [78526465], path term <theNumber> [158226177], depList [79276801]
    --  DependencyList has incorrect ref count 2 for occurrences 1
object [80587777] of class SmallFloat, equality index <c2.c3.theNumber> [78526465], path term <theNumber> [158226177], depList [79276801]
    --  DependencyList has incorrect ref count 2 for occurrences 1
object [82107137] of class SmallFloat, equality index <c2.c3.theNumber> [78526465], path term <theNumber> [158226177], depList [79276801]
    --  DependencyList has incorrect ref count 2 for occurrences 1
object [82404609] of class SmallFloat, equality index <c2.c3.theNumber> [78526465], path term <theNumber> [158226177], depList [79276801]
    --  DependencyList has incorrect ref count 2 for occurrences 1
object [82518785] of class SmallFloat, equality index <c2.c3.theNumber> [78526465], path term <theNumber> [158226177], depList [79276801]
    --  DependencyList has incorrect ref count 2 for occurrences 1
object [80480513] of class SmallFloat, equality index <c2.c3.theNumber> [78526465], path term <theNumber> [158226177], depList [79276801]
    --  DependencyList has incorrect ref count 2 for occurrences 1
object [81432577] of class SmallFloat, equality index <c2.c3.theNumber> [78526465], path term <theNumber> [158226177], depList [79276801]
    --  DependencyList has incorrect ref count 2 for occurrences 1
object [80378881] of class SmallFloat, equality index <c2.c3.theNumber> [78526465], path term <theNumber> [158226177], depList [79276801]
    --  DependencyList has incorrect ref count 2 for occurrences 1
object [80008193] of class SmallFloat, equality index <c2.c3.theNumber> [78526465], path term <theNumber> [158226177], depList [79276801]
    --  DependencyList has incorrect ref count 2 for occurrences 1
object [83608321] of class SmallFloat, equality index <c2.c3.theNumber> [78526465], path term <theNumber> [158226177], depList [79276801]
    --  DependencyList has incorrect ref count 2 for occurrences 1
object [82923777] of class SmallFloat, equality index <c2.c3.theNumber> [78526465], path term <theNumber> [158226177], depList [79276801]
    --  DependencyList has incorrect ref count 2 for occurrences 1
object [79157249] of class SmallFloat, equality index <c2.c3.theNumber> [78526465], path term <theNumber> [158226177], depList [79276801]
    --  DependencyList has incorrect ref count 2 for occurrences 1
object [84477185] of class Float, equality index <c2.c3.theNumber> [78526465], path term <theNumber> [158226177], depList [79276801]
    --  DependencyList has incorrect ref count 2 for occurrences 1
object [84406017] of class Float, equality index <c2.c3.theNumber> [78526465], path term <theNumber> [158226177], depList [79276801]
    --  DependencyList has incorrect ref count 2 for occurrences 1
object [83485953] of class Float, equality index <c2.c3.theNumber> [78526465], path term <theNumber> [158226177], depList [79276801]
    --  DependencyList has incorrect ref count 2 for occurrences 1
object [78984449] of class Float, equality index <c2.c3.theN
chisandrei commented 7 years ago

Just tried the following and the Inspector&Debugger look fast so the error seems to be related to the actual String:

 | string |  
 string := String new: 1092571.
 1 to: 1092571 do: [ :index |
      string at: index put: $a ].
 self halt.
 string.
chisandrei commented 7 years ago

When I need to debug recursion errors I usually put a self halt at the beginning of GtGsMinimalClient>>#debuggerRequested:. The fist time I hit proceed and the second time the error will be related to the debugger. Now manually executing GtGsGenericStackDebugger openBasicStackViewerFor: gsNotification from: self (like if GtGsGenericStackDebugger useBasicStackViewer answers true) should just open with a transcript showing the stack frames. If you could paste that output it will help to understand what is the error in the debugger.

dalehenrich commented 7 years ago

second halt yields: a MessageNotUnderstood occurred (error 2010), a QuadByteString does not understand #'truncateWithElipsisTo:' ... this looks like a method that is available in GsDevKit/GLASS/tODE, but not the base ...

chisandrei commented 7 years ago

Ahh, yes that's the bug. The inspector extension for String objects (CharacterCollection>>gtGsInspectorAATextIn:) uses it. I guess I'll add a CharacterCollection>>#gtGsTruncateWithElipsisTo: