[m-dev.] infinite loop in typechecking with functional dependency with latest compiler

Peter Ross pro at missioncriticalit.com
Tue Feb 27 04:24:55 AEDT 2007


Hi,

# tar xzf bug.tgz
# cd bug
# make
mmc --compile-to-c --grade asm_fast.gc     --very-verbose -T     time_yaowl 
% Parsing module `time_yaowl' and imported interfaces...
% Reading module `time_yaowl.m'... successful parse.
% Reading interface for module `builtin.int'... successful parse.
% Reading interface for module `io.int'... successful parse.
% Reading interface for module `yawl.int'... successful parse.
% Reading interface for module `time.int'... successful parse.
% Reading interface for module `list.int'... successful parse.
% Reading interface for module `private_builtin.int'... successful parse.
% Reading short interface for module `bool.int2'... successful parse.
% Reading short interface for module `char.int2'... successful parse.
% Reading short interface for module `deconstruct.int2'... successful parse.
% Reading short interface for module `map.int2'... successful parse.
% Reading short interface for module `maybe.int2'... successful parse.
% Reading short interface for module `ops.int2'... successful parse.
% Reading short interface for module `stream.int2'... successful parse.
% Reading short interface for module `string.int2'... successful parse.
% Reading short interface for module `univ.int2'... successful parse.
% Reading short interface for module `enum.int2'... successful parse.
% Reading short interface for module `assoc_list.int2'... successful parse.
% Reading short interface for module `set.int2'... successful parse.
% Reading short interface for module `term.int2'... successful parse.
% Reading short interface for module `tree234.int2'... successful parse.
% Reading short interface for module `pair.int2'... successful parse.
% Reading short interface for module `type_desc.int2'... successful parse.
% Reading short interface for module `set_ordlist.int2'... successful parse.
% Module qualifying items...
% done.
% Expanding equivalence types... done.
% Converting parse tree to hlds...
% Processing clause 1 for predicate `time_yaowl.build_time_yaowl_specification/4'...
% done.
% Writing auto-dependency file `time_yaowl.d'... done.
% Checking typeclasses...
% Checking typeclass instances...
% Checking for cyclic classes...
% Checking for missing concrete instances...
% Checking functional dependencies on instances...
% Checking typeclass constraints...
% Checking typeclass constraints on predicate `time_yaowl.build_time_yaowl_specification'/4
% Checking typeclass constraints on unification predicate for type constructor time_yaowl.time_global
% Checking typeclass constraints on comparison predicate for type constructor time_yaowl.time_global
% Checking typeclass constraints on unification predicate for type constructor time_yaowl.time_state_holder
% Checking typeclass constraints on comparison predicate for type constructor time_yaowl.time_state_holder
% Checking typeclass constraints on unification predicate for type constructor time_yaowl.time_static
% Checking typeclass constraints on comparison predicate for type constructor time_yaowl.time_static
% Checking typeclass constraints on unification predicate for type constructor time_yaowl.time_token
% Checking typeclass constraints on comparison predicate for type constructor time_yaowl.time_token
% Checking that insts have matching types... done.
% Type-checking...
% Type-checking clauses...
% Type-checking predicate `time_yaowl.build_time_yaowl_specification'/4
At conj: 
        some [S_1, G_2, T_3]
        S_5: S
        WF_6: (yawl.yaowl_specification((time_yaowl.time_global(G)), (time_yaowl.time_token(T))))
        STATE_VARIABLE_IO_0_8: (io.state)
        STATE_VARIABLE_IO_9: (io.state)
        & yawl.yaowl_static_global_token(S_1, G_2, T_3)

At unify: 
        some [S_1, G_2, T_3]
        S_5: S
        WF_6: (yawl.yaowl_specification((time_yaowl.time_global(G)), (time_yaowl.time_token(T))))
        STATE_VARIABLE_IO_0_8: (io.state)
        STATE_VARIABLE_IO_9: (io.state)
        & yawl.yaowl_static_global_token(S_1, G_2, T_3)

At before context reduction: 
        some [S_1, G_2, T_3]
        S_5: S
        WF_6: (yawl.yaowl_specification((time_yaowl.time_global(G)), (time_yaowl.time_token(T))))
        STATE_VARIABLE_IO_0_8: (io.state)
        STATE_VARIABLE_IO_9: (io.state)
        V_11: (time_yaowl.time_static(S))
        & yawl.yaowl_static_global_token(S_1, G_2, T_3)

At call: 
        some [S_1, G_2, T_3]
        S_5: S
        WF_6: (yawl.yaowl_specification((time_yaowl.time_global(G)), (time_yaowl.time_token(T))))
        STATE_VARIABLE_IO_0_8: (io.state)
        STATE_VARIABLE_IO_9: (io.state)
        V_11: (time_yaowl.time_static(S))
        & yawl.yaowl_static_global_token(S_1, G_2, T_3)

At before context reduction: 
        some [S_1, G_2, T_3]
        S_5: S
        WF_6: (yawl.yaowl_specification((time_yaowl.time_global(G)), (time_yaowl.time_token(T))))
        STATE_VARIABLE_IO_0_8: (io.state)
        STATE_VARIABLE_IO_9: (io.state)
        STATE_VARIABLE_IO_1_10: (io.state)
        V_11: (time_yaowl.time_static(S))
        & yawl.yaowl_static_global_token(S_1, G_2, T_3)
        <= yawl.yaowl_static_global_token((time_yaowl.time_static(S_1)), (time_yaowl.time_global(G_2)), (time_yaowl.time_token(T_3)))

--------------------------

at this point the processor usage stays at 100% and nothing more is printed.

Thanks,
Pete
-------------- next part --------------
A non-text attachment was scrubbed...
Name: bug.tgz
Type: application/x-gtar
Size: 734 bytes
Desc: not available
URL: <http://lists.mercurylang.org/archives/developers/attachments/20070226/17b5bfdb/attachment.gtar>


More information about the developers mailing list