Bug #60
open
Assertion into VM 1.10.0.0
0%
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.
Updated by Alain Prouté over 17 years ago
- Assignee changed from Alain Prouté to Anonymous
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:
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é over 17 years ago
- Status changed from New to Resolved
Fixed.