From: <pcm...@us...> - 2007-03-09 19:16:08
|
Revision: 277 http://javapathfinder.svn.sourceforge.net/javapathfinder/?rev=277&view=rev Author: pcmehlitz Date: 2007-03-09 11:16:05 -0800 (Fri, 09 Mar 2007) Log Message: ----------- * Ok, there are daemons out there - by chance discovered that running TestVMDeadlockJPF from ant and explicitly via bin/javajpf yielded different results! Ant said Ok, javajpf actually reported an error. to make matters worse, the error was real - the artificial RUNSTART (justified by the "max one CG per insn" constraint) in combination with the Thread.start() native peer caused an assertion in ElementInfo.lock(), because nobody ever called ThreadInfo.registerLockContender(ei). And to make that even worse, I now think that Thread.start has to be a breaker (we had a createThreadStartCG in the SchedulerFactory, but it was optional and returned null). I think the reason why it has to be a right mover is that the freshly started thread might well do something (like starting another thread that interacts with the starter) that causes one of the next insns in the starter to become a right mover. The real trick with this is that we can't check for ThreadInfo.isFirstStepInsn in RUNSTART, since it always will be the first insn, so the block()/registerLockContender() is in Thread.start(), the lock(ti) is in RUNSTART :( Still need a regression test for that * finally did bite the bullet and created a 'RawTest' base for our raw tests. Still it has to run outside JPF, but the main() driver was just too redundant. Now I just have to update all raw tests to use that (so far, only TestVMDeadlock does) * added simple asym lock and nested monitor lockout test cases to TestVMDeadlock * fixed a small bug in ExecTracker, which gets into trouble if we skip insn logging Modified Paths: -------------- trunk/env/jvm/gov/nasa/jpf/jvm/JPF_java_lang_Thread.java trunk/extensions/numeric/test/gov/nasa/jpf/numeric/TestNumeric.java trunk/src/gov/nasa/jpf/jvm/DefaultSchedulerFactory.java trunk/src/gov/nasa/jpf/jvm/ElementInfo.java trunk/src/gov/nasa/jpf/jvm/StackFrame.java trunk/src/gov/nasa/jpf/jvm/bytecode/RUNSTART.java trunk/src/gov/nasa/jpf/tools/ExecTracker.java trunk/test/gov/nasa/jpf/mc/TestVMDeadlock.java trunk/test/gov/nasa/jpf/mc/TestVMDeadlockJPF.java Added Paths: ----------- trunk/test/gov/nasa/jpf/jvm/RawTest.java This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |