[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
## [Bug-glpk] Re: Bug in amd_order.c ?

**From**: |
Andrew Makhorin |

**Subject**: |
[Bug-glpk] Re: Bug in amd_order.c ? |

**Date**: |
Sun, 24 May 2009 17:11:32 +0300 |

>* I'm sorry to say I think I may have found a small bug in amd_order.c*
>* When using glpk 4.38 and I try to solve this problem with the interior *
>* point method (either null or default params) :*
>* Minimize*
>* obj: - x_4 - x_5*
>* Subject To*
>* r_1: + x_4 - 2 x_1 = 4*
>* r_2: + 2 x_5 + x_2 = 12*
>* r_3: + 2 x_5 + 3 x_4 + x_3 = 18*
>* End*
>* I get this:*
>* glp_write_lp: writing problem data to `outpb.lp'...*
>* Scaling...*
>* A: min|aij| = 1.000e+00 max|aij| = 3.000e+00 ratio = 3.000e+00*
>* Problem data seem to be well scaled*
>* GM: min|aij| = 8.882e-01 max|aij| = 1.126e+00 ratio = 1.268e+00*
>* Original LP has 3 row(s), 5 column(s), and 7 non-zero(s)*
>* Working LP has 3 row(s), 5 column(s), and 7 non-zero(s)*
>* Matrix A has 7 non-zeros*
>* Matrix S = A*A' has 5 non-zeros (upper triangle)*
>* Approximate minimum degree ordering (AMD)...*
>* xfree: ptr = (nil); null pointer*
>* Error detected in file glplib07.c at line 175*
>* Aborted*
>* I traced through the code a bit and found that on line 132 in *
>* src/amd/amd_order.c you have:*
>* Rp = NULL ;*
>* Then just before the status is returned (line 192 I think) you have*
>* amd_free (Rp) ;*
>* however since amd_free is a pseudonym of xfree and xfree throws the *
>* error above when it receives a var with an null value, you can see the *
>* problem...*
Thank you for the bug report.
The bug will be fixed in the next release of the package.
To fix the bug right now please replace line 50 in file
src/amd/amd_internal.h:
#define amd_free xfree
by the following one:
#define amd_free(ptr) { if ((ptr) != NULL) xfree(ptr); }