[BUG] troubles with damage management
RossBoylan at stanfordalumni.org
RossBoylan at stanfordalumni.org
Wed Jan 8 02:19:17 UTC 2003
I keep experiencing odd failures in the invalidation code. Like the one
here, they occur
when I am not even at the keyboard. I have suspected they might arise
from some
interaction the screen blanker with smalltalk, but this one happened
after an hour.
I think the screen blanked well before then.
My application has a thread that ticks away and causes some updates to
the display. It may be relevant that the errors are being raised from
that thread, rather than my main thread (the top of the stack shows how
it started). [Or do I mean the bottom? Graphically it's at the end of
the list below, but its the first item on the stack.]
This is a weird error. Rectangle class>>merging fails because topLeft
in the last line
is nil. The only obvious way to get that is if listOfRects is empty,
but it is not according
to the debugger.
At other times I've got a debugger because, apparently, the grow logic
for some list (I think of the invalid rectangles) seems not to have
worked. For example, the list may have 15 items and gets ready to
insert the 16th. The error handler comes up after the grow logic has
apparently run, when it is attempting to insert item 16. The problem is
that the list has not grown, and I get a subscript out of bounds error.
Anyway, if these problems ring a bell with anyone, please let me know.
Thanks.
7 January 2003 7:04:43 pm
VM: unix - Squeak3.2gamma of 22 January 2002 [latest update: #4653]
Image: Squeak3.2 [latest update: #4956]
UndefinedObject(Object)>>doesNotUnderstand:
Receiver: nil
Arguments and temporary variables:
aMessage: a Message with selector: #corner: and arguments: #(nil)
Receiver's instance variables:
nil
Rectangle class>>merging:
Receiver: Rectangle
Arguments and temporary variables:
listOfRects: an OrderedCollection(962 at 160 corner: 1410 at 176 963 at 176
corner: 1409...etc...
topLeft: nil
bottomRight: nil
r: nil
Receiver's instance variables:
superclass: Object
methodDict: a MethodDictionary(#=->a CompiledMethod (2718)
#aboveCenter->a Comp...etc...
format: 20614
instanceVariables: #('origin' 'corner')
organization: ('accessing' aboveCenter area bottom bottom:
bottomCenter bottomL...etc...
subclasses: #(CharacterBlock B3DViewport Quadrangle)
name: #Rectangle
classPool: a Dictionary()
sharedPools: nil
environment: nil
category: nil
DamageRecorder>>recordInvalidRect:
Receiver: a DamageRecorder
Arguments and temporary variables:
newRect: 1027 at 1301 corner: 1057 at 894
mergeRect: nil
a: 0
rect: 1027 at 1301 corner: 1079 at 894
Receiver's instance variables:
invalidRects: an OrderedCollection()
totalRepaint: false
WorldState>>recordDamagedRect:
Receiver: a WorldState
Arguments and temporary variables:
damageRect: 1027 at 1301.0 corner: 1057 at 894
Receiver's instance variables:
hands: #(a HandMorph(1377))
activeHand: nil
viewBox: 0 at 0 corner: 1592 at 1126
canvas: a FormCanvas on: DisplayScreen(1592x1126x16)
damageRecorder: a DamageRecorder
stepList: a Heap(a StepMessage (a TrashCanMorph #stepAt: nil) (a
TrashCanMorph ...etc...
lastStepTime: 30040178
lastStepMessage: nil
lastCycleTime: 30040197
commandHistory: a CommandHistory
alarms: a Heap()
lastAlarmTime: 30040178
remoteServer: nil
multiCanvas: nil
--- The rest of the stack ---
PasteUpMorph>>invalidRect:from:
ActivityGridMorph(Morph)>>invalidRect:from:
TwoWayScrollPane(Morph)>>invalidRect:from:
TransformMorph(Morph)>>invalidRect:from:
TransformMorph>>invalidRect:from:
GridMorph(Morph)>>invalidRect:from:
NumericModelMorph(Morph)>>invalidRect:from:
NumericModelMorph(Morph)>>invalidRect:
NumericModelMorph(Morph)>>changed
NumericModelMorph(Morph)>>extent:
NumericModelMorph(StringMorph)>>fitContents
NumericModelMorph(StringMorph)>>contents:
NumericModelMorph(LiveStringModelMorph)>>step
[] in ActivityGridRow>>update
[] in Dictionary>>valuesDo:
Dictionary(Set)>>do:
Dictionary>>associationsDo:
Dictionary>>valuesDo:
ActivityGridRow(GridRow)>>morphsDo:
ActivityGridRow>>update
ActivityGridRow>>updateLength:
MessageSend>>valueWithArguments:
[] in OngoingActivity(Object)>>trigger:withArguments:
EventMessageSet>>do:
OngoingActivity(Object)>>trigger:withArguments:
OngoingActivity(Object)>>trigger:with:
OngoingActivity(Activity)>>updateLengthFor:old:
MessageSend>>valueWithArguments:
[] in MinorActivityLog(Object)>>trigger:withArguments:
EventMessageSet>>do:
MinorActivityLog(Object)>>trigger:withArguments:
MinorActivityLog>>updateLengthFor:old:
ActivityLogEntry>>lengthChanged:
[] in ActivityLogEntry>>end:
Monitor>>critical:
MajorActivityLog class>>critical:
ActivityLogEntry>>end:
[] in MajorActivityLog>>updateCurrentTaskTime
[] in Monitor>>critical:
BlockContext>>ensure:
Monitor>>critical:
MajorActivityLog class>>critical:
MajorActivityLog>>updateCurrentTaskTime
[] in MajorActivityLog>>initialize
BlockContext>>repeat
[] in MajorActivityLog>>initialize
[] in BlockContext>>newProcess
More information about the Squeak-dev
mailing list
|