[e-lang] Strange lock-ups with simple E program

Thomas Leonard tal at it-innovation.soton.ac.uk
Fri Jul 24 09:53:01 EDT 2009


I was trying to find out why my E program failed from time to time, and eventually simplified it to this:


def seedVatAuthor := <elang:interp.seedVatAuthor>
def seedVat := seedVatAuthor(<unsafe>)

def obj := seedVat.run("def test() { return null }")[0]

var i := 0
def stress() {
	i += 1
	if (i < 10 || (i % 100) == 0) { println(`i: $i`) }
	when (obj<-()) -> { stress() }


It runs for a while, but then it hangs (after printing "i: 11800", "i:
2300" and "i: 36900" on my last few runs).

While simplifying it, I quite often also got these:

java.lang.RuntimeException: Failed: OldFarRef may only be smashed: <Far

(I see from the svn logs that an "OldFarRef" is just a normal far ref)

Any hints on how to debug this? I was using e.version=0.9.2a (according
to the eprops file), but I also tried with svn. That also hangs, but
sometimes prints:

error: problem: <ViciousCycleException: Caught in a forwarding loop>

Other times, it doesn't print anything.


Dr Thomas Leonard
IT Innovation Centre
2 Venture Road
Hampshire SO16 7NP

Tel: +44 0 23 8076 0834
Fax: +44 0 23 8076 0833
mailto:tal at it-innovation.soton.ac.uk

More information about the e-lang mailing list