This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Parma Polyhedra Library 0.10.1


On Tue, Apr 14, 2009 at 6:58 PM, Roberto Bagnara <bagnara@cs.unipr.it> wrote:
> Richard Guenther wrote:
>>
>> On Tue, Apr 14, 2009 at 3:02 PM, Roberto Bagnara <bagnara@cs.unipr.it>
>> wrote:
>>>
>>> We are pleased to announce the availability of PPL 0.10.1, a new release
>>> of the Parma Polyhedra Library.
>>
>> It seems to build and test ok on {i586,ia64,ppc,ppc64,s390,x86_64}-linux
>> but I get
>>
>> PASS: nnc_writepolyhedron1
>> /bin/sh: line 4: 29952 Segmentation fault ? ? ?${dir}$tst
>> FAIL: memory1
>> ======================================
>> 1 of 191 tests failed
>> Please report to ppl-devel@cs.unipr.it
>> ======================================
>>
>> on s390x-linux. ?Does the testsuite stop after the first error?
>
> Hi Richard.
>
> The testsuite does not proceed after the first directory that gives
> an error. ?In your case, the `tests/Polyhedron' directory produced that
> error and the `tests/Grid' directory is the only subdirectory of `tests'
> that has not been tested because of that error.

Ok.

>> If not,
>> what is memory1 testing?
>
> It tests the PPL features that allow to recover after an out-of-memory
> error, i.e., when std::bad_alloc is thrown. ?It does so by limiting
> the amount of memory available to the process, attempting some
> expensive computation, catching std:bad_alloc, and restart.
> The key function is this one:
>
> bool
> guarded_compute_open_hypercube_generators(dimension_type dimension,
> ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?unsigned long max_memory_in_bytes)
> {
> ?try {
> ? ?limit_memory(max_memory_in_bytes);
> ? ?compute_open_hypercube_generators(dimension);
> ? ?return true;
> ?}
> ?catch (const std::bad_alloc&) {
> ? ?nout << "out of virtual memory" << endl;
> ? ?return false;
> ?}
> ?catch (...) {
> ? ?exit(1);
> ?}
> ?// Should never get here.
> ?exit(1);
> }
>
> From the fact that you observe this failure, I gather that the configure
> script found a version of GMP compiled with -fexceptions. ?Unfortunately,
> this is not always enough.

Ah, I guess the script (incorrectly) assumes this because it uses
the C++ bindings of GMP?  Certainly our GMP (the C parts) are not
built with -fexceptions.  The configure detects

checking how to link with libgmp... /usr/lib64/libgmp.so
checking how to link with libgmpxx... /usr/lib64/libgmpxx.so
/usr/lib64/libgmp.so
checking for the GMP library version 4.1.3 or above... yes
checking size of mp_limb_t... 8
checking whether GMP has been compiled with support for exceptions... yes
checking for __mpz_struct._mp_alloc... yes
checking for __mpz_struct._mp_size... yes
checking for __mpz_struct._mp_d... yes

the configure test for exceptions looks sane though.  It might be
that we indeed run into an unwinder bug.

> ?For instance, on the Itanium the test fails
> because of the libunwind bug reported in
>
> ? http://lists.gnu.org/archive/html/libunwind-devel/2008-09/msg00001.html
>
> Hence the test is disabled if defined(__ia64). ?I don't know what the
> problem could be on s390x-linux.

After adding || defined(__s390x) all tests now pass (good enough
for me - the test doesn't seem to be critical).

>?Do you know if there is an s390x-linux
> machine we can obtain access to for the purpose of debugging?

Unfortunately not.

Thanks,
Richard.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]