Bug #60

Assertion into VM 1.10.0.0

Added by Cédric RICARD about 3 years ago. Updated almost 3 years ago.

Status:Resolved Start:01/29/2009
Priority:Immediate Due date:
Assigned to:Cédric RICARD % Done:

0%

Category:Virtual Machine
Target version:1.10
Platform:All Triage Stage:Unreviewed
Resolution:

Description

Upgrading VM from version 1.9.1.12 to version 1.10.0.0, one of our application doesn't start any more. The Anubis VM close itself with following message :

anbexec: /home/ricard/develop/anubis/anubis_dev/vm/src/serialize.cpp:1391: static void CM::AnubisProcess::ui_indirect_type_Int(CM::AnubisProcess*): Assertion `nb != 0' failed.
Aborted

As this application contains a Web Server which use serialized states on disk, it should be the unserializing of a state which fails.

History

Updated by Alain Prouté about 3 years ago

  • Assigned to changed from Alain Prouté to Cédric RICARD

Cédric RICARD wrote:

Upgrading VM from version 1.9.1.12 to version 1.10.0.0, one of our application doesn't start any more. The Anubis VM close itself with following message : [...]

As this application contains a Web Server which use serialized states on disk, it should be the unserializing of a state which fails.

This is actually a bug in serialize.cpp. The case nb 0 (nb number of bigits) line 1391 must be treated in the same way as the case
(nb > 0x3ffffffe || (4*(nb+1)) > (U32)(free_sdata)) just above. If one of these tests fails, the datum cannot be unserialized. In this
situation, one must set the flag:

ufflag = 1;

and:

(1) in the case of an indirect unserialization instruction, do the following:

(*(MAM(m_SP)-1))) = 0;    / put the fake datum '0' instead of the unserialized datum / 
*(MAM(m_SP)-1) += 4; /
position the destination pointer one word higher for the next datum */

(2) in the case of a direct unserialization instruction, do the following:

MAM(m_R) = 0;                      /* put the fake datum '0' in R */

We have exactly the same bug at line 1305 (type_Int).

Notice: 'ui_decl' = unserialization instruction'
'si_decl' = serialization instruction

I did not modify the source. I let Cédric perform the correction.

Updated by Alain Prouté almost 3 years ago

  • Status changed from New to Resolved

Fixed.

Also available in: Atom PDF