| Karim Belabas on Wed, 31 Oct 2012 11:12:46 +0100 |
[Date Prev] [Date Next] [Thread Prev] [Thread Next] [Date Index] [Thread Index]
| Re: segfault in bnfisintnorm |
* Charles Greathouse [2012-10-31 03:10]:
> > version()
> %1 = [2, 6, 0, "git-2472469"]
>
> > bnfisintnorm(bnfinit('y^2+93),54647)
> *** at top-level: bnfisintnorm(bnfinit
> *** ^--------------------
> *** bnfisintnorm: bug in PARI/GP (Segmentation Fault), please report.
> *** Break loop: type 'break' to go back to GP prompt
The underlying bug ( in bnfisprincipal() ) is not specific to the 'testing'
branch, but hard to reproduce in 'stable': it is in principle there, but
I couldn't trigger the problematic code paths.
Deep down, the problem is due to an old design bug which I do not know how to
fix without breaking backward compatility in a very painful way: the PARI t_MAT
type can't exactly represent matrix(n,0) [ always treated as matrix(0,0) ],
so generic linear algebra code must be wary of maps from (or to) the
null vector space, because dimensions become 0 in an unexpected way. :-(
That specific instance of careless code is now triggered in master
because bnfinit() is able to return a result with smaller factorbases than
before, i.e. smaller matrices. So an intermediate matrix with 11 columns in
'stable' ends up with 0 columns in 'testing'.
Nice catch, thanks ! :-)
K.B.
P.S: Fixed in
commit 37e6ba38f4a5795634a863672e078e6e6b43852f
Author: Karim Belabas <Karim.Belabas@math.u-bordeaux1.fr>
Date: Wed Oct 31 10:52:14 2012 +0100
isprincipal: treat the case of B = [;]
Actually, B = matrix(n, 0) but PARI can't represent that => matrix(0,0).
Error (high-level function) or SEGV (low-level function)
Test-case: bnfisintnorm(bnfinit('y^2+93),54647)
P.S2: It is very important to report bugs, the preferred way is through
our Bug Tracking System:
http://pari.math.u-bordeaux.fr/Bugs/Reporting.html
This is a little more cumbersome for the reporter than a direct email to
me, Bill, or the mailing lists. But in the long run, it saves a huge
amount of development time, because all the information is gathered in a
single place, easy to search and examine even years after a problem
has been fixed, and long since forgotten.
--
Karim Belabas, IMB (UMR 5251) Tel: (+33) (0)5 40 00 26 17
Universite Bordeaux 1 Fax: (+33) (0)5 40 00 69 50
351, cours de la Liberation http://www.math.u-bordeaux1.fr/~belabas/
F-33405 Talence (France) http://pari.math.u-bordeaux1.fr/ [PARI/GP]
`