[PPL-devel] Failure building ppl under Cygwin 64 with a mingw target.

Roberto Bagnara bagnara at cs.unipr.it
Fri Aug 1 08:36:26 CEST 2014


Hello Keith.

On 07/31/14 22:50, Keith Clifford wrote:
> I'm 99.99% certain that it's a tools issue and not an issue with your code.

I had this impression but no proof for it.

> The fix up in PPL::Init::Init to call
> ppl_set_GMP_memory_allocation_functions() was short by 0x10. When I manually
> fixed it to what I thought it should be and with the noisy and very noisy
> environment variables on, memory2 did a lot of allocating and freeing and
> then terminated normally.

Thanks for your research on the issue!

> I'm going to keep digging to find out what exactly is broken. Do you want me
> to keep you updated? From here on I can talk to the people responsible for
> whatever is broken.

Please keep us posted.
Thanks again,

   Roberto

> -----Original Message-----
> From: Roberto Bagnara [mailto:bagnara at cs.unipr.it] 
> Sent: July 29, 2014 12:03 AM
> To: kclifford at tranaptic.ca
> Cc: The Parma Polyhedra Library developers' list
> Subject: Re: [PPL-devel] Failure building ppl under Cygwin 64 with a mingw
> target.
> 
> Hello Keith.
> 
> On 07/29/14 05:27, Keith Clifford wrote:
>> I set the environment variables as you requested and didn't get any
> output.
>> I commented out ppl_set_GMP_memory_allocation_functions and got the 
>> following output:
>>
>> $ ./memory2
>> test1()
>> test2()
>> **************** k = 4294967295 ****************
>> *************** dry run ***************
>> **************** k = 0 ****************
>> test3()
>> **************** k = 4294967295 ****************
>> *************** dry run ***************
>> **************** k = 0 ****************
>>
>> With ppl_set_GMP_memory_allocation_functions back in and some 
>> debugging added I didn't see any of the debugging before the segfault:
>>
>> 	$ ./memory2
>> 	Segmentation fault
>>
>> Modified ppl_set_GMP_memory_allocation_functions:
>>
>> 	extern "C" void
>> 	ppl_set_GMP_memory_allocation_functions() {
>> 	  before_main = true;
>>
>> 	  nout << "ppl_set_GMP_memory_allocation_functions!" << endl;
>> 	  // Allow the static coefficients of the library to be allocated
>> 	  // without any limit.
>> 	  reset_allocators(ULONG_MAX, ULONG_MAX);
>> 	  mp_set_memory_functions(cxx_malloc, cxx_realloc, cxx_free);
>> 	}
>>
>> I rebuilt with --enable-debugging and ran under strace with the 
>> following
>> results:
>>
>> $ strace memory2
>>
>> This application has requested the Runtime to terminate it in an 
>> unusual way.
>> Please contact the application's support team for more information.
>> terminate called after throwing an instance of 'std::bad_cast'
>>   what():  std::bad_cast
>> --- Process 7044, exception 4000001f at 000000007704103B
>>
>> Does any of this help?
> 
> Yes.  Can you please have a session with gdb in order to understand where
> the std::bad_cast exception is thrown?  You can do this by setting a
> breakpoint at __cxa_throw.
> Thanks,
> 
>    Roberto
> 
>> -----Original Message-----
>> From: Roberto Bagnara [mailto:bagnara at cs.unipr.it]
>> Sent: July 26, 2014 1:00 AM
>> To: kclifford at tranaptic.ca
>> Cc: The Parma Polyhedra Library developers' list
>> Subject: Re: [PPL-devel] Failure building ppl under Cygwin 64 with a 
>> mingw target.
>>
>> Hello Keith, thanks for the report.
>>
>> On 07/25/14 20:18, Keith Clifford wrote:
>>> I'm building a set of cross compilers to run under mingw and I got 
>>> the
>> error below.
>>>
>>> The set of packages and their versions to do the build are:
>>>
>>> Build machine:
>>>
>>>      CYGWIN_NT-6.1 1.7.31(0.272/5/3) 2014-07-21 18:40 x86_64 Cygwin
>>>
>>> Components:
>>>
>>>      gmp-6.0.0a
>>>      mpfr-3.1.2
>>>      mpc-1.0.2
>>>      isl-0.12.2
>>>      cloog-0.18.1
>>>      ppl-1.1
>>>      binutils-2.24
>>>      gcc-4.9.1
>>>      newlib-2.1.0
>>>      gdb-7.7
>>>
>>> I've attached the script, mkx, that I use for building the cross 
>>> compilers, the test-suit log, and the make and check logs. The 
>>> individual test logs are empty. I'm set up to run so if you'd like me 
>>> to try anything, let me know and I can give it a go. When the build 
>>> failed it said let you know and I'm going to continue investigating.
>>> I'll let you know if I find anything.
>>
>>
>> As far as I can tell, building the PPL succeeded and only one test 
>> failed
>> (memory2 in tests/Polyhedron).  Can you please rerun just that test 
>> after defining the environment variables PPL_NOISY_TESTS and 
>> PPL_VERY_NOISY_TESTS to whatever you like?
>> Then please send the resulting output to ppl-devel at cs.unipr.it King 
>> regards,
>>
>>    Roberto
>>
> 
> 


-- 
     Prof. Roberto Bagnara

Applied Formal Methods Laboratory - University of Parma, Italy
mailto:bagnara at cs.unipr.it
                              BUGSENG srl - http://bugseng.com
                              mailto:roberto.bagnara at bugseng.com



More information about the PPL-devel mailing list