FIXED] Re: [pgrouting-users] core dump in server while calling driving_distance function for generating a polygon

Dave Potts dave.potts at pinan.co.uk
Sun Feb 12 07:17:49 EST 2012


Hello list

Thanks to those that tried to help me

Problem found

I am calling the function driving_distance from the file
routing_dd_wrappers.sql at line 78.


This is my input data
0 X 3000.000000   Y 3000.000000
1 X 3000.000000   Y 3000.000000
2 X 3000.000000   Y 3000.000000
3 X 3000.000000   Y 3000.000000
4 X 4000.000000   Y 2000.000000
5 X 4000.000000   Y 2000.000000

If you look at it careful, you will notice less than 3 different values
which is the source of the problem.  The Alpha_shape_2 routine blow up
with a core dump unless you have 3 or more different alpha values in it.

This little problem is not described in the CGAL support.

Attempts are made to catch it in the route source, but these fail because
it overlooks the problem of the same data appearing twice.

ie do
0 X 3000.000000   Y 3000.000000
1 X 3000.000000   Y 3000.000000
2 X 3000.000000   Y 3000.000000
3 X 3000.000000   Y 3000.000000

Will pass the current checks.

I think we need to add the following code at line 166 of alpha_drivedist.cpp


Alpha_shape_2 A(points.begin(), points.end(),
                  coord_type(10000),
                  Alpha_shape_2::GENERAL);

  // check that there are more than 3 values in A otherwise you get a core
  // dump
  if( A.number_of_alphas() < 3){

        *err_msg=(char*)"Driving distance requires at least 3 different
distinct values";
        return -1;
  }
  std::vector<Segment> segments;
  std::vector<Segment> result;

ie get the alpha_shape_2 code to check the number of distinct values, if
its less than 3 issue a message but do not core dump and take the database
down.


Dave.







Dave Potts wrote:
> Now problems with the LD_LIBRARY_PATH, but just in case of errors i
> removed the extra copies of libroute.so, nochanges.
>
> As I said the problem seems to be alpha_shape routine.
>
> Dave.
> Stephen Woodbridge wrote:
>> Dave,
>>
>> This sounds like you might have multiple librouting.so look here:
>> /usr/lib/postgresql/8.4/lib/librouting.so
>> change the version to match yours.
>>
>> Also try:
>>
>> locate librouting.so
>>
>> ldd /usr/lib/postgresql/8.4/lib/librouting.so
>>
>> and make sure you do not have multiple copies of dependent libraries
>> loaded. Like in /usr/lib and /usr/local/lib
>>
>> See if you can determine if msg_rsv is getting a null pointer passed to
>> it. But anything is possible if the loading is messed up.
>>
>> -Steve
>>
>> On 2/9/2012 12:57 AM, Dave Potts wrote:
>>>
>>> While calling the driving_dstance function from
>>> routing_dd_wrappers.sql,
>>> line  78
>>>
>>> My postgres server back DIES
>>>
>>> I tried rebuilding from source and attaching and instance of gdb to the
>>> server process as pg_backend_pid();
>>>
>>> By doing something like gdb /usr/lib/postgresql/9.1/bin/postgres pid
>>> Gdb claims that server process dies in msg_rsv
>>>
>>> I think I am using the wrong image because none of the DD code is being
>>> used.
>>>
>>> By turning on debug statments,  I managed to strace the problem to the
>>> c/c++ interface between alpha_shape
>>>
>>> I get lots of prints until the routine
>>>
>>>   ret = alpha_shape(vertices, total_tuples, res, res_count,&err_msg);
>>>
>>> is called.
>>>
>>> I tried puting in calls like
>>>
>>> write(2,"Hello\n",6); and  elog(ERROR, "Hello world" ,"eeee"); as the
>>> first line in alpha_shape, nothing evers gets printed
>>>
>>> So I suspect it might be a linking issue!
>>>
>>> Is this a known problem?
>>>
>>> What process image should I be attaching gbc to?
>>>
>>>
>>> regards
>>>
>>>
>>>
>>> Dave
>>>
>>>
>>
>> _______________________________________________
>> Pgrouting-users mailing list
>> Pgrouting-users at lists.osgeo.org
>> http://lists.osgeo.org/mailman/listinfo/pgrouting-users
>>
>
>
> --
>
>
> _______________________________________________
> Pgrouting-users mailing list
> Pgrouting-users at lists.osgeo.org
> http://lists.osgeo.org/mailman/listinfo/pgrouting-users
>


-- 




More information about the Pgrouting-users mailing list