[Mono-dev] Problem with regression test of exceptions.exe
Neale Ferguson
NealeFerguson at verizon.net
Mon Jul 27 13:37:57 EDT 2009
I¹m having problems with Pastebin at the moment so I was unable to place the
following there and use IRC:
Strange situation running regression test for exceptions.exe. I am crashing
as the following call returns NULL:
case OP_START_HANDLER: {
MonoInst *spvar = mono_find_spvar_for_region (cfg,
bb->region);
I have traced the code and it shows bb->region = 258. I traced
mono_create_spvar_for_region and it shows and entry being placed in the hash
table for region 258. However, in the find routine we have:
if ((region & (0xf << 4)) == MONO_REGION_TRY) {
MonoMethodHeader *header = mono_method_get_header
(cfg->method);
/*
* This can happen if a try clause is nested inside a
finally clause.
*/
int clause_index = (region >> 8) - 1;
g_assert (clause_index >= 0 && clause_index <
header->num_clauses);
region = mono_find_block_region_notry (cfg, header->clauses
[clause_index].try_offs
et);
}
A trace shows that 258 passes the == MONO_REGION_TRY test and so we get a
new region number (530) and when we do a g_hash_table_lookup() using that
region we get null. I see no inserts using that (530) region number.
Also, MONO_REGION_TRY is 0. Is the test supposed to be against this value or
for checking bit 0?
I am confused as to what is happening.
Neale
More information about the Mono-devel-list
mailing list