[Seaside] Announcements/Seaside continuations collision in newer cog vm's

Esteban Lorenzano estebanlm at gmail.com
Thu Sep 8 19:19:23 UTC 2011


Hi, 
(yep, I'm copying tree lists because I think is a vm problem, but can be a seaside problem, or a pharo problem)
(yes, it can be MY problem too... but I don't think so... ;) 

I'm having this really, really strange problem (because it was working before, and I do not change anything... so, maybe a change in latest changes on pharo 1.3, the version I'm using, is the cause)... 
This is the problem: 

I'm creating an application who sends an announcement, to edit something... this announcement ends in a WAComponent>>#call: message... 

The problem is: continuation execution fires a notification (WARenderNotification), and SubscriptionRegistry>>deliver:to: process the announcement this way: 

deliver: anAnnouncement to: subs
	
	subs do: 
		[:each | 
		[each deliver: anAnnouncement] 
			"each is always in subs, so error will be due to each being last element.
			So return, nothing more to process"
			ifCurtailed: [self deliver: anAnnouncement to: ([subs after: each] on: NotFound do: [^self])]]

...and curtailedBlock is being executed... and that throws an error. 
This was working on older versions of VM, so maybe this is a recent change?

this error was confirmed in my builds, and also in latest Eliot build. Also... is confirmed NOT being there in older cogs or interpreter.

and btw... 

self deliver: anAnnouncement to: ([subs after: each] on: NotFound do: [^self])

shouldn't be

self deliver: anAnnouncement to: ([Array with: (subs after: each)] on: NotFound do: [^self])

because #deliver:to: is expecting a collection, not a registry?

thanks,
Esteban


More information about the seaside mailing list