[m-users.] Signal 253 error on MinGW32 during compilation of module with a large table

Dirk Ziegemeyer dirk at ziegemeyer.de
Thu Feb 19 08:49:13 AEDT 2015


> Am 18.02.2015 um 08:20 schrieb Julien Fischer <jfischer at opturion.com>:
> 
> 
> Hi,
> 
> On Wed, 18 Feb 2015, Julien Fischer wrote:
> 
>>> Second Issue - concerning a large table without pragma fact_table:
>>> The compilation stops with an error message for a module which
>>> contains a large table (2,400 facts). One column of the table is a discriminated union type and therefore I can't use pragma fact_table.
>>> The app compiled well on Mac OS X 10.10 with grade none.gc but under MinGW I receive this error message:
>>> "$ mmc --make --grade none.gc appName
>>> Making Mercury\none.gc\i686-pc-mingw32\Mercury\cs\moduleTwo.c
>>> Error: system command received signal 253.
>>> ** Error making 'Mercury\none.gc\i686-pc-mingw32\Mercury\cs\moduleTwo.c'."
>> 
>> I would guess that's coming from the C compiler.  Could you please
>> re-run that and inclucde the option --verbose-commands, so that we can
>> see what's going on.
> 
> Actually, looking at that again it's almost certainly *not* the C
> compiler since it's building the .c file.  Is it possible for us  to
> either see the table in question (or an excerpt) or at least get a
> further description of its structure, e.g. how may columns it contains,
> what their types are, a large the du terms are etc.

Here is a short description of the conceptual background and my current implementation.

% There are domains which are identified by a domain code.
:- type domainCode ---> ap; as ...

% Domains have members.
:- type domainMember
	--->
		  ap(ap)
		; as(as)
		; id(id)
		...

% Explicit domains are (a subtype of) domains.
% Explicit domains have explicit domain members.
:- inst explicitDomainMember
	--->
		  ap(ground)
		; as(ground)
		...

:- type ap
	--->
		  x0
		; x1
		...

:- type as
	--->
		  x1
		; x2.

% Typed domains are (a subtype of) domains.
% Typed domains have typed domain members.
:- type id == int.

% Every explicitDomainMember has exactly one memberID.
% Every explicitDomainMember has exactly one memberLabel.

:- type memberLabel == string.

:- pred member(domainMember, memberID, domainCode, string, memberLabel).
:- mode member(in(explicitDomainMember), uo, uo, uo, uo) is det.
:- mode member(uo, uo, in, in, uo) is semidet.

member(ap(x0), 3677, ap, "x0", "Not applicable/ All approaches").
member(ap(x1), 1000, ap, "x1", "1250% for positions not subject to any method").
...
member(as(x1), 4006, as, "x1", "National GAAP").
member(as(x2), 4007, as, "x2", "IFRS").
...

There are 2,400 explicit domain members defined this way.




More information about the users mailing list