On Jan 12, 2007, at 7:53 AM, Gregory Shimansky wrote:

Elena Semukhina wrote:
I tried StackTest in jitrino debug mode on both SUSE9 linux 2 CPU ia32 and em64t machines. It passed. It is now excluded for linux x86_64 (probably
Geir has excluded it because it always passed for me).
I ran it on that platform and saw rather strange behavior. The test is essentially the same as stress.Stack: both tests invoke a method recursively waiting for StackOverflowError. The difference is that the method is void in StackTest and boolean in stress.Stack. Another difference is that StackTest should never fail: it detects both throwing StackOverflowError and not throwing it as normal situation. Doing that it passes even with 200000000
iterations with no StackOverflowError (!) (JIT) while on RI it gets
StackOverflowError after 650000 iterations. On drlvm linux ia32 it gets exception after 8600 iterations. It also gets the exception in interpreter
mode on em64t (about 2400 iterations).
Can this be correct behavior?

If you use SuSE9 on x86_64, then most likely it is because of weirdness of SuSE9 installation. It has no hard or soft stack limit by default (see ulimit -s). You can try to limit stack size like ulimit -s 8192 and then this test should not give too many iterations. If you upgrade to SuSE10, you will see that it has default stack limit 8192.

The current implementation of SOE in drlvm is that it takes stack size from the system. If system has no limit, then stack has no limit as well. It has been discussed in other threads about SOE that this is not very good, but hasn't been fixed AFAIK.


I think that if we can find a way to have an "cononical environment" for linux that get set before running the tests, that would be useful.

geir

Reply via email to