[vwnc] [Bug?] [7.6] Prim failure attempting to grow finalization queue

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
2 messages Options
Reply | Threaded
Open this post in threaded view
|

[vwnc] [Bug?] [7.6] Prim failure attempting to grow finalization queue

Martin McClure
Summary: We see prim failures growing finalization queue, but I suspect
that this is supposed to fail quietly.

Version: 7.6

Severity: Medium

Description:

We've occasionally been seeing a primitiveFailed error in the
finalization Process, when it's attempting to grow the finalization
queue. Here's a stack excerpt:

[19] Error class(GenericException class)>>raiseErrorString:
[20] WeakArray class(Object)>>error:
[21] WeakArray class(Object)>>primitiveFailed
[22] WeakArray class>>growFinalizationQueueTo:
[23] WeakArray class>>attemptToGrowFinalQueueTo:
[24] WeakArray class>>fetchFromFinalizationQueue
[25] optimized [] in WeakArray class>>outerFinalizationLoop
[26] BlockClosure>>on:do:
[27] WeakArray class>>outerFinalizationLoop

In this case, it's attempting to grow the finalizatoin queue to a size
of 17001, which doesn't seem excessive.

I may not understand thus correctly, but it looks like this failure can
happen randomly, any time that old space is pretty full and doesn't feel
like growing. It doesn't attempt to do any GC, but that's probably OK
since that is probably more appropriately left to the LowSpaceProcess.

The finalization process seems to be designed to handle
QueueOverflowErrors gracefully. The method is named
*attempt*ToGrowFinalQueueTo:. So I suspect that the original design
intent was that failures to grow would be silently ignored, since the
queueOverflowSignal will be raised anyway.

As it is, it opens a walkback on the finalization thread, which is
fairly bad.

A possible fix is to remove the line "^self primitiveFailed" from
WeakArray class>>growFinalizationQueueTo:

Thanks,

-Martin
_______________________________________________
vwnc mailing list
[hidden email]
http://lists.cs.uiuc.edu/mailman/listinfo/vwnc
Reply | Threaded
Open this post in threaded view
|

Re: [vwnc] [Bug?] [7.6] Prim failure attempting to grow finalizationqueue

Andres Valloud-6
It seems this problem was solved by

AR# 56756
Description Finalization queue growth failure

which is fixed with 7.7.

Andres.

-----Original Message-----
From: [hidden email] [mailto:[hidden email]] On
Behalf Of Martin McClure
Sent: Wednesday, January 28, 2009 12:08 PM
To: VWNC
Subject: [vwnc] [Bug?] [7.6] Prim failure attempting to grow
finalizationqueue

Summary: We see prim failures growing finalization queue, but I suspect
that this is supposed to fail quietly.

Version: 7.6

Severity: Medium

Description:

We've occasionally been seeing a primitiveFailed error in the
finalization Process, when it's attempting to grow the finalization
queue. Here's a stack excerpt:

[19] Error class(GenericException class)>>raiseErrorString:
[20] WeakArray class(Object)>>error:
[21] WeakArray class(Object)>>primitiveFailed [22] WeakArray
class>>growFinalizationQueueTo:
[23] WeakArray class>>attemptToGrowFinalQueueTo:
[24] WeakArray class>>fetchFromFinalizationQueue [25] optimized [] in
WeakArray class>>outerFinalizationLoop [26] BlockClosure>>on:do:
[27] WeakArray class>>outerFinalizationLoop

In this case, it's attempting to grow the finalizatoin queue to a size
of 17001, which doesn't seem excessive.

I may not understand thus correctly, but it looks like this failure can
happen randomly, any time that old space is pretty full and doesn't feel
like growing. It doesn't attempt to do any GC, but that's probably OK
since that is probably more appropriately left to the LowSpaceProcess.

The finalization process seems to be designed to handle
QueueOverflowErrors gracefully. The method is named
*attempt*ToGrowFinalQueueTo:. So I suspect that the original design
intent was that failures to grow would be silently ignored, since the
queueOverflowSignal will be raised anyway.

As it is, it opens a walkback on the finalization thread, which is
fairly bad.

A possible fix is to remove the line "^self primitiveFailed" from
WeakArray class>>growFinalizationQueueTo:

Thanks,

-Martin
_______________________________________________
vwnc mailing list
[hidden email]
http://lists.cs.uiuc.edu/mailman/listinfo/vwnc

_______________________________________________
vwnc mailing list
[hidden email]
http://lists.cs.uiuc.edu/mailman/listinfo/vwnc