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

Hi Steve

A small problem, what the heck is a github?

I assume it some sort of source control system, whats its address and is
there any documentation on it?

Dave
Stephen Woodbridge wrote:

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

Hi Dave,

GitHub is where the pgRouting source code is hosted:
https://github.com/pgrouting/pgrouting

It makes collaboration and code contribution relatively easy (at least compared to what pgRouting used before).

You can read more in details how it works at http://help.github.com/
In short you create an account, fork the pgRouting repository (it’s just as simple as cklick the “Fork” button), then either make changes to your personal fork on your own PC or even directly on the Github website (you can edit source files there in your own fork).
When you’re done you can submit a “Pull request” (a button click again) and we can review the changes, test and merge them to the main repository. And also the credits go to you :slight_smile:

Daniel

On Mon, Feb 13, 2012 at 8:01 PM, Dave Potts <dave.potts@pinan.co.uk> wrote:

Hi Steve

A small problem, what the heck is a github?

I assume it some sort of source control system, whats its address and is
there any documentation on it?

Dave

Stephen Woodbridge wrote:

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


Pgrouting-users mailing list
Pgrouting-users@lists.osgeo.org
http://lists.osgeo.org/mailman/listinfo/pgrouting-users


Georepublic UG & Georepublic Japan
eMail: daniel.kastl@georepublic.de
Web: http://georepublic.de