Re: mpost 1.9991: segmentation fault

luigi scarso <[email protected]>
Newsgroups gmane.comp.tex.metapost
Message-ID <CAG5iGsDH7k6gT60vV6yKSaApOwVPCKJvfkWPEw0OtpyLNCKWfg@mail.gmail.com>
On Mon, Oct 31, 2016 at 12:25 PM, luigi scarso <[email protected]> wrote:
> On Mon, Oct 31, 2016 at 10:48 AM, Toby Thurston <[email protected]> wrote:
>>
>>> Message: 1
>>> Date: Fri, 30 Sep 2016 16:01:20 +0200
>>> From: luigi scarso <[email protected]>
>>> To: Nicola <[email protected]>
>>> Cc: MetaPost List <[email protected]>
>>> Subject: Re: [metapost] mpost 1.9991: segmentation fault
>>> Message-ID:
>>>       <CAG5iGsAdkeFfh8DZA8juznYfE+8CWLw9+PC91__b5iiJcfVccg@mail.gmail.com>
>>> Content-Type: text/plain; charset="UTF-8"
>>>
>>> On Mon, Sep 26, 2016 at 8:22 PM, Nicola <[email protected]> wrote:
>>>> Not sure if this is the right place to report bugs, but anyway:
>>>>
>>>> ]mpost
>>>> This is MetaPost, version 1.9991 (TeX Live 2016) (kpathsea version 6.2.2)
>>>> **\
>>>> (/usr/local/texlive/2016/texmf-dist/metapost/base/mpost.mp
>>>> (/usr/local/texlive/2016/texmf-dist/metapost/base/plain.mp
>>>> Preloading the plain mem file, version 1.005) )
>>>> *(t1,t2,t3,t4,t5) = (1,2,3,4,5);
>>>> ! Missing `)' has been inserted.
>>>> <to be read again>
>>>>                 ,
>>>> <*> (t1,t2,t3,t4,
>>>>               t5) = (1,2,3,4,5);
>>>> ?
>>>> Segmentation fault: 11
>>>
>>> The problem seems to be a wrong (i.e partial) initialization of a cmyk node .
>>> I have a patch on my local box, I need to test it a bit.
>>>
>>> --
>>> luigi
>>
>> I see a very similar bug when trying to assign to a “transform” variable.
>>
>> eg
>>
>> show mpversion;
>> transform T;  T = (1,2,3,4,5,6);
>> end
>>
>>
>> produces:
>> This is MetaPost, version 1.9991 (TeX Live 2016) (kpathsea version 6.2.2)  31 OCT 2016 09:41
>> **t.mp
>> (/usr/local/texlive/2016/texmf-dist/metapost/base/mpost.mp
>> (/usr/local/texlive/2016/texmf-dist/metapost/base/plain.mp
>> Preloading the plain mem file, version 1.005) ) (./t.mp
>>>> "1.9991"
>> ! Missing `)' has been inserted.
>> <to be read again>
>>                   ,
>> l.2 transform T;  T = (1,2,3,4,
>>                               5,6);
>> ?
>>>> (xpart T,ypart T,xxpart T,xypart T,yxpart T,yypart T)
>>>> (1,2,3,4)
>> ! Equation cannot be performed (transform=cmykcolor).
>> <to be read again>
>>                   ,
>> l.2 transform T;  T = (1,2,3,4,
>>                               5,6);
>> ?
>> ! Extra tokens will be flushed.
>> <to be read again>
>>                   ,
>> l.2 transform T;  T = (1,2,3,4,
>>                               5,6);
>> ?
>> )
>>
>> This is using a version of mpost that I compiled this morning using the latest source from your svn.
>>
>> I’ve opened an issue report on the bug tracker.
>>
>> Toby
>>
>>
>>
>> --
>> http://tug.org/metapost/
>
> ok, thank you for the report.
>
> --
> luigi

With the latest context and luatex from experimental
\starttext
\startMPpage
transform G;
    G = (a,b,c,d,e,f);
    show G;
\stopMPpage
\stoptext

gives
! Missing `)' has been inserted.
<to be read again>
,
<*> transform G; G = (a,b,c,d,
e,f); show G; ;
I found no right delimiter to match a left one. So I've
put one in, behind the scenes; this may fix the problem.

>> (xpart G,ypart G,xxpart G,xypart G,yxpart G,yypart G)
>> (a,b,c,d)
! Equation cannot be performed (transform=cmykcolor).
<to be read again>
,
<*> transform G; G = (a,b,c,d,
e,f); show G; ;
I'm sorry, but I don't know how to make such things equal.
(See the two expressions just above the error message.)

! Extra tokens will be flushed.
<to be read again>
,
<*> transform G; G = (a,b,c,d,
e,f); show G; ;
I've just read as much of that statement as I could fathom,
so a semicolon should have been next. It's very puzzling...
but I'll try to get myself back together, by ignoring
everything up to the next `;'. Please insert a semicolon
now in front of anything that you don't want me to delete.
(See Chapter 27 of The METAFONTbook for an example.)

>> (xpart G,ypart G,xxpart G,xypart G,yxpart G,yypart G)
[1]

 1     \starttext
 2     \startMPpage
 3     transform G;
 4         G = (a,b,c,d,e,f);
 5         show G;
 6 >>  \stopMPpage
 7     \stoptext

and no seg. fault.

Note that if t is a transform then
it cannot be initialise with a six-upla (e.g. t := (0,0,1,0,0,1) ; )
as we can do with rgb and cmyk type --- this is by design.
Also , if t := identity;
t = (0,0,1,0,0,1);
is again an error.

-- 
luigi

--
http://tug.org/metapost/
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.