octave-maintainers
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Octave-2.9.9 luinc failure


From: David Bateman
Subject: Re: Octave-2.9.9 luinc failure
Date: Tue, 03 Oct 2006 21:46:46 +0200
User-agent: Thunderbird 1.5.0.7 (X11/20060921)

John W. Eaton wrote:
> On  3-Oct-2006, Tom Holroyd (NIH/NIMH) [E] wrote:
> 
> | octave:3> test luinc.cc
> | 
> | Program received signal SIGSEGV, Segmentation fault.
> | [Switching to Thread -1209013632 (LWP 22423)]
> | MatrixType (this=0xbff2d514, t=MatrixType::Permuted_Lower, np=4, p=0x0, 
> |     _full=false) at MatrixType.cc:856
> | 856             perm[i] = p[i];
> | Current language:  auto; currently c++
> | 
> | (gdb) print i
> | $1 = 0
> | (gdb) print p
> | $2 = (const octave_idx_type *) 0x0
> 
> What is the call stack (the output of the "where" command in gdb).
> 
> Also, it would be helpful to have more details about your system (the
> output of the octave-bug script).
> 
> jwe
> 

This is one of those bugs when you don't have all of the dependent
libraries installed. A possible fix though I'm unsure if it is complete
is the attached..


D.

Index: liboctave/MatrixType.cc
===================================================================
RCS file: /cvs/octave/liboctave/MatrixType.cc,v
retrieving revision 1.5
diff -c -r1.5 MatrixType.cc
*** liboctave/MatrixType.cc     23 Sep 2006 13:33:09 -0000      1.5
--- liboctave/MatrixType.cc     3 Oct 2006 19:41:23 -0000
***************
*** 847,853 ****
      bandden (0), upper_band (0), lower_band (0),
      dense (false), full (_full), nperm (0), perm (0)
  {
!   if (t == MatrixType::Permuted_Upper || t == MatrixType::Permuted_Lower)
      {
        typ = t;
        nperm = np;
--- 847,854 ----
      bandden (0), upper_band (0), lower_band (0),
      dense (false), full (_full), nperm (0), perm (0)
  {
!   if ((t == MatrixType::Permuted_Upper || t == MatrixType::Permuted_Lower) &&
!       np > 0 && perm != 0)
      {
        typ = t;
        nperm = np;
Index: src/DLD-FUNCTIONS/luinc.cc
===================================================================
RCS file: /cvs/octave/src/DLD-FUNCTIONS/luinc.cc,v
retrieving revision 1.10
diff -c -r1.10 luinc.cc
*** src/DLD-FUNCTIONS/luinc.cc  19 May 2006 05:32:18 -0000      1.10
--- src/DLD-FUNCTIONS/luinc.cc  3 Oct 2006 19:44:37 -0000
***************
*** 168,180 ****
                        SparseLU fact (sm, Qinit, thresh, true, droptol,
                                       milu, udiag);
  
!                       SparseMatrix P = fact.Pr ();
!                       SparseMatrix L = P.transpose () * fact.L ();
!                       retval(1) = octave_value (fact.U (),
!                                 MatrixType (MatrixType::Upper));
!                       retval(0) = octave_value (L, MatrixType 
                                                  (MatrixType::Permuted_Lower, 
                                                   sm_nr, fact.row_perm ()));
                      }
                      break;
  
--- 168,183 ----
                        SparseLU fact (sm, Qinit, thresh, true, droptol,
                                       milu, udiag);
  
!                       if (! error_state)
!                         {
!                           SparseMatrix P = fact.Pr ();
!                           SparseMatrix L = P.transpose () * fact.L ();
!                           retval(1) = octave_value (fact.U (),
!                                         MatrixType (MatrixType::Upper));
!                           retval(0) = octave_value (L, MatrixType 
                                                  (MatrixType::Permuted_Lower, 
                                                   sm_nr, fact.row_perm ()));
+                         }
                      }
                      break;
  
***************
*** 183,193 ****
                        SparseLU fact (sm, Qinit, thresh, true, droptol,
                                       milu, udiag);
  
!                       retval(2) = fact.Pr ();
!                       retval(1) = octave_value (fact.U (),
                                  MatrixType (MatrixType::Upper));
!                       retval(0) = octave_value (fact.L (),
                                  MatrixType (MatrixType::Lower));
                      }
                      break;
  
--- 186,199 ----
                        SparseLU fact (sm, Qinit, thresh, true, droptol,
                                       milu, udiag);
  
!                       if (! error_state)
!                         {
!                           retval(2) = fact.Pr ();
!                           retval(1) = octave_value (fact.U (),
                                  MatrixType (MatrixType::Upper));
!                           retval(0) = octave_value (fact.L (),
                                  MatrixType (MatrixType::Lower));
+                         }
                      }
                      break;
  
***************
*** 197,208 ****
                        SparseLU fact (sm, Qinit, thresh, false, droptol,
                                       milu, udiag);
  
!                       retval(3) = fact.Pc ();
!                       retval(2) = fact.Pr ();
!                       retval(1) = octave_value (fact.U (),
                                  MatrixType (MatrixType::Upper));
!                       retval(0) = octave_value (fact.L (),
                                  MatrixType (MatrixType::Lower));
                      }
                      break;
                    }
--- 203,217 ----
                        SparseLU fact (sm, Qinit, thresh, false, droptol,
                                       milu, udiag);
  
!                       if (! error_state)
!                         {
!                           retval(3) = fact.Pc ();
!                           retval(2) = fact.Pr ();
!                           retval(1) = octave_value (fact.U (),
                                  MatrixType (MatrixType::Upper));
!                           retval(0) = octave_value (fact.L (),
                                  MatrixType (MatrixType::Lower));
+                         }
                      }
                      break;
                    }
***************
*** 230,242 ****
                        SparseComplexLU fact (sm, Qinit, thresh, true, 
                                              droptol, milu, udiag);
  
!                       SparseMatrix P = fact.Pr ();
!                       SparseComplexMatrix L = P.transpose () * fact.L ();
!                       retval(1) = octave_value (fact.U (),
                                  MatrixType (MatrixType::Upper));
!                       retval(0) = octave_value (L, MatrixType 
                                                  (MatrixType::Permuted_Lower, 
                                                   sm_nr, fact.row_perm ()));
                      }
                      break;
  
--- 239,254 ----
                        SparseComplexLU fact (sm, Qinit, thresh, true, 
                                              droptol, milu, udiag);
  
!                       if (! error_state)
!                         {
!                           SparseMatrix P = fact.Pr ();
!                           SparseComplexMatrix L = P.transpose () * fact.L ();
!                           retval(1) = octave_value (fact.U (),
                                  MatrixType (MatrixType::Upper));
!                           retval(0) = octave_value (L, MatrixType 
                                                  (MatrixType::Permuted_Lower, 
                                                   sm_nr, fact.row_perm ()));
+                         }
                      }
                      break;
  
***************
*** 245,255 ****
                        SparseComplexLU fact (sm, Qinit, thresh, true,
                                              droptol, milu, udiag);
  
!                       retval(2) = fact.Pr ();
!                       retval(1) = octave_value (fact.U (),
                                  MatrixType (MatrixType::Upper));
!                       retval(0) = octave_value (fact.L (),
                                  MatrixType (MatrixType::Lower));
                      }
                      break;
  
--- 257,270 ----
                        SparseComplexLU fact (sm, Qinit, thresh, true,
                                              droptol, milu, udiag);
  
!                       if (! error_state)
!                         {
!                           retval(2) = fact.Pr ();
!                           retval(1) = octave_value (fact.U (),
                                  MatrixType (MatrixType::Upper));
!                           retval(0) = octave_value (fact.L (),
                                  MatrixType (MatrixType::Lower));
+                         }
                      }
                      break;
  
***************
*** 259,270 ****
                        SparseComplexLU fact (sm, Qinit, thresh, false,
                                              droptol, milu, udiag);
  
!                       retval(3) = fact.Pc ();
!                       retval(2) = fact.Pr ();
!                       retval(1) = octave_value (fact.U (),
                                  MatrixType (MatrixType::Upper));
!                       retval(0) = octave_value (fact.L (),
                                  MatrixType (MatrixType::Lower));
                      }
                      break;
                    }
--- 274,288 ----
                        SparseComplexLU fact (sm, Qinit, thresh, false,
                                              droptol, milu, udiag);
  
!                       if (! error_state)
!                         {
!                           retval(3) = fact.Pc ();
!                           retval(2) = fact.Pr ();
!                           retval(1) = octave_value (fact.U (),
                                  MatrixType (MatrixType::Upper));
!                           retval(0) = octave_value (fact.L (),
                                  MatrixType (MatrixType::Lower));
+                         }
                      }
                      break;
                    }

reply via email to

[Prev in Thread] Current Thread [Next in Thread]