[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
RE : RE : [Pnet-developers] [bug #4430] Internal error: Could not verify
From: |
Yannis BRES |
Subject: |
RE : RE : [Pnet-developers] [bug #4430] Internal error: Could not verify the code - br.s at verify_branch.c:393 |
Date: |
Tue, 29 Jul 2003 14:09:44 +0200 |
Hi !
Still more on this topic
> Here is (I guess) interesting feedback concerning OUR
> bug, stated as "Non-compatible types on stack depending on
> path" by peverify.
> So, very roughly, we had a branch of a conditional that
> would exit (but the bytecode verifiers do not known that),
> leave on the stack the object returned by our exit function,
> and join another branch that leaves an integer on the top of
> the stack. Don't ask me why this is the only bytecode
> compliance error in a >50MB IL file...
> So, both ilverify and peverify do complain about that.
> However, upon executing the invalid program, only the PNet
> on-the-fly bytecode verifier complains, the MS one do not. I
> guess that this is because the branch that exits is never
> taken for the input file I used. I'm surprised that MS
> bytecode verifier do not entirely check a method upon calling
> it, and I guess that they do not completely JIT it as well.
> Maybe they only work at the basic block level, which seems
> interesting...
My theory was wrong and the reality is much more simple : peverify do
not accept the same class of program than the built-in BCV. peverify
refuses programs in which converging blocks do no leave "compatible" stacks,
while the VM just tolerates that...
Yannis
======================================================================
ESSI http://www.essi.fr
Attache Temporaire d'Enseignement et de Recherche
----------------------------------------------------------------------
INRIA - Equipe Mimosa http://www-sop.inria.fr/mimosa
Collaborateur Exterieur +33 (4) 92 38 79 67
----------------------------------------------------------------------
+33 (6) 60 38 79 52 http://www.yannis.bres.name
======================================================================