FIXED] Re: [pgrouting-users] core dump in server while calling
driving_distance function for generating a polygon
Stephen Woodbridge
woodbri at swoodbridge.com
Sun Feb 12 09:02:36 EST 2012
Hi Dave,
Thank you for digging into this issue and finding a fix. The fix sounds
reasonable. Can you open a ticket on this and attach a patch or a git
pull request if you have the changes in github.
Thank you for your effort on this.
-Steve
On 2/12/2012 7:17 AM, Dave Potts wrote:
> 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