Skip to Content.
Sympa Menu

cgal-discuss - Re: [cgal-discuss] Re: Nef_Polyhedron is_simple() going wild

Subject: CGAL users discussion list

List archive

Re: [cgal-discuss] Re: Nef_Polyhedron is_simple() going wild


Chronological Thread 
  • From: Jayesh Salvi <>
  • To:
  • Subject: Re: [cgal-discuss] Re: Nef_Polyhedron is_simple() going wild
  • Date: Wed, 1 Jun 2011 16:57:36 +0530
  • Domainkey-signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :content-type; b=fh5opJGeQUwJIEHdzqY8zLpKfZi5QOfJhFYiEXk8KWUrQgNaZMAHBQp5//Exw9usvM sRWODFQgFoioTF9T1GfDa27s1hlW47MqFoXjTKuT/uaoQZf9pQ+T9L69eNB3n692/UdQ md7DZSg6DTMAktGcqlD65PjYegHE4pvrrcwg4=

Ok,

I've made some progress on this.

The wild behavior was probably due to our memory allocation bugs.
After replacing malloc, by calloc the erratic behavior went away and I
got a nice segmentation fault. Here is the stack trace:

(gdb) bt
#0 0xb7796cf5 in
CGAL::SNC_FM_decorator<CGAL::SNC_structure<CGAL::Epeck,
CGAL::SNC_indexed_items, bool>
>::create_facet_objects(CGAL::Plane_3<CGAL::Epeck> const&,
std::_List_iterator<CGAL::Object>, std::_List_iterator<CGAL::Object>)
const
() from build/libcsgop.so
#1 0xb7783dc7 in
CGAL::SNC_external_structure<CGAL::SNC_indexed_items,
CGAL::SNC_structure<CGAL::Epeck, CGAL::SNC_indexed_items, bool>
>::categorize_facet_cycles_and_create_facets() const () from
build/libcsgop.so
#2 0xb7789fcb in void
CGAL::SNC_external_structure<CGAL::SNC_indexed_items,
CGAL::SNC_structure<CGAL::Epeck, CGAL::SNC_indexed_items, bool>
>::build_after_binary_operation<CGAL::ID_support_handler<CGAL::SNC_indexed_items,
CGAL::SNC_decorator<CGAL::SNC_structure<CGAL::Epeck,
CGAL::SNC_indexed_items, bool> > >
>(CGAL::ID_support_handler<CGAL::SNC_indexed_items,
CGAL::SNC_decorator<CGAL::SNC_structure<CGAL::Epeck,
CGAL::SNC_indexed_items, bool> > >&) () from build/libcsgop.so
#3 0xb7775484 in void
CGAL::Binary_operation<CGAL::SNC_structure<CGAL::Epeck,
CGAL::SNC_indexed_items, bool>
>::operator()<CGAL::Nef_polyhedron_3<CGAL::Epeck,
CGAL::SNC_indexed_items,
bool>::OR>(CGAL::SNC_point_locator<CGAL::SNC_decorator<CGAL::SNC_structure<CGAL::Epeck,
CGAL::SNC_indexed_items, bool> > >*, CGAL::SNC_structure<CGAL::Epeck,
CGAL::SNC_indexed_items, bool> const&,
CGAL::SNC_point_locator<CGAL::SNC_decorator<CGAL::SNC_structure<CGAL::Epeck,
CGAL::SNC_indexed_items, bool> > > const*,
CGAL::SNC_structure<CGAL::Epeck, CGAL::SNC_indexed_items, ---Type
<return> to continue, or q <return> to quit---
bool> const&,
CGAL::SNC_point_locator<CGAL::SNC_decorator<CGAL::SNC_structure<CGAL::Epeck,
CGAL::SNC_indexed_items, bool> > > const*,
CGAL::Nef_polyhedron_3<CGAL::Epeck, CGAL::SNC_indexed_items, bool>::OR
const&) () from build/libcsgop.so
#4 0xb776e6a6 in CGAL::Nef_polyhedron_3<CGAL::Epeck,
CGAL::SNC_indexed_items,
bool>::join(CGAL::Nef_polyhedron_3<CGAL::Epeck,
CGAL::SNC_indexed_items, bool> const&) const () from build/libcsgop.so
#5 0xb7769efc in CGAL::Nef_polyhedron_3<CGAL::Epeck,
CGAL::SNC_indexed_items,
bool>::operator+=(CGAL::Nef_polyhedron_3<CGAL::Epeck,
CGAL::SNC_indexed_items, bool> const&) () from build/libcsgop.so
#6 0xb7764308 in csgop () from build/libcsgop.so
... application specific frames ...

Does that give any clue?
--
Jayesh



On Tue, May 31, 2011 at 7:15 PM, Jayesh Salvi
<>
wrote:
> Let me see if I can put together some minimal c++ code to demo this.
> --
> Jayesh
>
>
>
> On Tue, May 31, 2011 at 11:31 AM, Sebastien Loriot (GeometryFactory)
> <>
> wrote:
>> Any complete minimal example showing the problem?
>>
>> S.
>>
>> Jayesh Salvi wrote:
>>>
>>> ^ Bump ^
>>>
>>> Any thoughts?
>>> --
>>> Jayesh
>>>
>>>
>>>
>>> On Sun, May 29, 2011 at 4:43 PM, Jayesh Salvi
>>> <>
>>> wrote:
>>>>
>>>> Hello,
>>>>
>>>> In my program I am creating two polyhedrons from two meshes (In this
>>>> case a cube and a sphere). Then I convert them to Nef Polyhedra and
>>>> apply union (+) operation on them. I then convert the returned Nef
>>>> Polyhedron into a Polyhedron_3, but before doing that I run
>>>> is_simple() check (just so that if it is not simple, I can generate an
>>>> error message, instead of assertion failure crash during the
>>>> conversion process).
>>>>
>>>> In this particular case - with a cube and sphere of specific
>>>> geometries - I observed that after some time the program starts
>>>> occupying a lot of memory and consumes most of the CPU. From the top
>>>> utility, I can see that the process is taking >90% memory and >90%
>>>> CPU. To see what's going on, I put cout statements at various places
>>>> to see during which part of the program does this start to happen. I
>>>> was surprised to find out that this happens when I call is_simple()
>>>> check on the nef polyhedron. At this point either I have to kill the
>>>> process or the system terminates it.
>>>>
>>>> I tried to run the program through valgrind, but as I read elsewhere
>>>> valgrind can't be used with CGAL programs because of floating point
>>>> issues.
>>>>
>>>> Do you have any suggestions how can I proceed to debug this?
>>>>
>>>> Thanks in advance.
>>>>
>>>> (My project is available at http://jayesh3.github.com/cadmium/ I can
>>>> provide instructions on how to reproduce the issue, if you need)
>>>> --
>>>> Jayesh
>>>>
>>>
>>
>>
>> --
>> You are currently subscribed to cgal-discuss.
>> To unsubscribe or access the archives, go to
>> https://lists-sop.inria.fr/wws/info/cgal-discuss
>>
>>
>



Archive powered by MHonArc 2.6.16.

Top of Page