Seg Fault in TGraph2D::Fit for v>4.01

Hi,

I am fitting a TF2 to a TGraph2D, and it used to work out just fine:

for (int i=0;i<_nx;i++) {
  for (int j=0;j<_nmtop;j++) {
    ...
    _grfit2d->SetPoint(i*_nmtop+j,x_clb,mtop_clb,_logl[i][j]);
  }
}
_fncfit2d=new TF2("fncfit2d","[0]+[1]*x+[2]*y+[3]*x*y+[4]*x*x+[5]*y*y",
			  fitxmin2d,fitxmax2d,fitmtopmin2d,fitmtopmax2d);
_fncfit2d->SetParameter(0,1.0);
_fncfit2d->SetParameter(1,1.0);
_fncfit2d->SetParameter(2,1.0);
_fncfit2d->SetParameter(3,1.0);
_fncfit2d->SetParameter(4,1.0);
_fncfit2d->SetParameter(5,1.0);
_grfit2d->Fit(_fncfit2d,"RQ0");

Now I have to switch from root-v4.01.04a to root-v4.04.02g, and all of a suden I get a segfault (The gdb backtrace is shown):

I have also tried tutorials/graph2dfit.C, and it doesn’t work under the 4.04 version either, while it works just fine with v4.01. Can you tell me what changed and how I can adjut? Thanks![/quote]

Could you send the shortest possible RUNNING script reproducing your problem?

Rene

I attach the macro ‘graph2d.C’, which expects ‘graph2d.txt’ (attached as well). Under v4.01, it works. Under v4.04, the fit doesn’t converge (although it doesn’t segfault, I can’t for some reason reproduce the segfault with the CINT macro).
graph2d.txt (3.6 KB)
graph2d.C (1.48 KB)

I cannot reproduce your problem. Running your macro unchaged, I get

[code]Processing graph2d.C…
FCN=318.594 FROM MIGRAD STATUS=CONVERGED 256 CALLS 257 TOTAL
EDM=1.80804e-010 STRATEGY= 1 ERR MATRIX NOT POS-DE

EXT PARAMETER APPROXIMATE STEP FIRST
NO. NAME VALUE ERROR SIZE DERIVATIVE
1 p0 6.32311e+003 5.78235e-001
2 p1 -2.95710e+003 6.51104e-001
3 p2 -2.02689e+001 3.75913e-003
4 p3 8.00485e+000 3.79352e-003
5 p4 7.85528e+002 5.39851e-001
6 p5 3.58890e-002 1.62869e-005[/code]




That is exactly what I see with v4.01.04a, but with v4.04.02b I get

root [0] 
Processing graph2d.C...
 **********
 **    1 **SET ERR           1
 **********
 PARAMETER DEFINITIONS:
    NO.   NAME         VALUE      STEP SIZE      LIMITS
     1 p0           1.00000e+00  3.00000e-01     no limits
     2 p1           1.00000e+00  3.00000e-01     no limits
     3 p2           1.00000e+00  3.00000e-01     no limits
     4 p3           1.00000e+00  3.00000e-01     no limits
     5 p4           1.00000e+00  3.00000e-01     no limits
     6 p5           1.00000e+00  3.00000e-01     no limits
 **********
 **    2 **SET PRINT           0
 **********
 **********
 **    3 **MIGRAD        5000    0.000441
 **********
 EIGENVALUES OF SECOND-DERIVATIVE MATRIX:
        -9.2823e-04  1.2002e+00  1.2002e+00  1.2002e+00  1.2002e+00  1.2002e+00
 MINUIT WARNING IN MIGRAD  
 ============== MATRIX FORCED POS-DEF BY ADDING 0.002128 TO DIAGONAL.
 MINUIT WARNING IN HESSE   
 ============== Negative diagonal element 1 in Error Matrix
 MINUIT WARNING IN HESSE   
 ============== Negative diagonal element 2 in Error Matrix
 MINUIT WARNING IN HESSE   
 ============== Negative diagonal element 3 in Error Matrix
 MINUIT WARNING IN HESSE   
 ============== Negative diagonal element 4 in Error Matrix
 MINUIT WARNING IN HESSE   
 ============== Negative diagonal element 5 in Error Matrix
 MINUIT WARNING IN HESSE   
 ============== Negative diagonal element 6 in Error Matrix
 MINUIT WARNING IN HESSE   
 ============== 2.57431e+21 added to diagonal of error matrix
 EIGENVALUES OF SECOND-DERIVATIVE MATRIX:
         0.0000e+00  0.0000e+00  0.0000e+00  0.0000e+00  0.0000e+00  0.0000e+00
 MINUIT WARNING IN HESSE   
 ============== MATRIX FORCED POS-DEF BY ADDING 0.001000 TO DIAGONAL.
 MINUIT WARNING IN HESSE
 ============== Matrix inversion fails.
  MNHESS FAILS AND WILL RETURN DIAGONAL MATRIX. 
 MIGRAD TERMINATED WITHOUT CONVERGENCE.
 FCN=2.122e-313 FROM MIGRAD    STATUS=FAILED        168 CALLS         169 TOTAL
                     EDM=0.000320002    STRATEGY= 1  ERROR MATRIX UNCERTAINTY  56.5 per cent
  EXT PARAMETER                APPROXIMATE        STEP         FIRST   
  NO.   NAME      VALUE            ERROR          SIZE      DERIVATIVE 
   1  p0          -1.03795e+17   1.35401e+00  -0.00000e+00   5.16400e-03
   2  p1          -1.03795e+17   1.35401e+00  -0.00000e+00   5.16400e-03
   3  p2          -1.03795e+17   1.35401e+00  -0.00000e+00   5.16400e-03
   4  p3          -1.03795e+17   1.35401e+00  -0.00000e+00   5.16400e-03
   5  p4          -1.03795e+17   1.35401e+00  -0.00000e+00   5.16400e-03
   6  p5          -1.03795e+17   1.35401e+00  -0.00000e+00   5.16400e-03
 **********
 **    4 **HESSE
 **********
 MINUIT WARNING IN HESSE   
 ============== Negative diagonal element 1 in Error Matrix
 MINUIT WARNING IN HESSE   
 ============== Negative diagonal element 2 in Error Matrix
 MINUIT WARNING IN HESSE   
 ============== Negative diagonal element 3 in Error Matrix
 MINUIT WARNING IN HESSE   
 ============== Negative diagonal element 4 in Error Matrix
 MINUIT WARNING IN HESSE   
 ============== Negative diagonal element 5 in Error Matrix
 MINUIT WARNING IN HESSE   
 ============== Negative diagonal element 6 in Error Matrix
 MINUIT WARNING IN HESSE   
 ============== 1 added to diagonal of error matrix
 FCN=5.81674e+08 FROM HESSE     STATUS=OK             52 CALLS         221 TOTAL
                     EDM=0.000305381    STRATEGY= 1      ERROR MATRIX ACCURATE 
  EXT PARAMETER                                INTERNAL      INTERNAL  
  NO.   NAME      VALUE            ERROR       STEP SIZE       VALUE   
   1  p0          -1.03795e+17   1.41421e+00   4.94933e+10  -1.03795e+17
   2  p1          -1.03795e+17   1.41421e+00   4.94933e+10  -1.03795e+17
   3  p2          -1.03795e+17   1.41421e+00   4.94933e+10  -1.03795e+17
   4  p3          -1.03795e+17   1.41421e+00   4.94933e+10  -1.03795e+17
   5  p4          -1.03795e+17   1.41421e+00   4.94933e+10  -1.03795e+17
   6  p5          -1.03795e+17   1.41421e+00   4.94933e+10  -1.03795e+17
 **********
 **    5 **MINOS
 **********
 FUNCTION MUST BE MINIMIZED BEFORE CALLING MINOs     
 MIGRAD MINIMIZATION HAS CONVERGED.
 FCN=5.81674e+08 FROM MIGRAD    STATUS=CONVERGED      13 CALLS         234 TOTAL
                     EDM=8.00005e-05    STRATEGY= 1      ERROR MATRIX ACCURATE 
  EXT PARAMETER                                   STEP         FIRST   
  NO.   NAME      VALUE            ERROR          SIZE      DERIVATIVE 
   1  p0          -1.03795e+17   1.41421e+00  -0.00000e+00   5.16400e-03
   2  p1          -1.03795e+17   1.41421e+00  -0.00000e+00   5.16400e-03
   3  p2          -1.03795e+17   1.41421e+00  -0.00000e+00   5.16400e-03
   4  p3          -1.03795e+17   1.41421e+00  -0.00000e+00   5.16400e-03
   5  p4          -1.03795e+17   1.41421e+00  -0.00000e+00   5.16400e-03
   6  p5          -1.03795e+17   1.41421e+00  -0.00000e+00   5.16400e-03
 FCN=5.81674e+08 FROM MINOS     STATUS=PROBLEMS        0 CALLS         234 TOTAL
                     EDM=8.00005e-05    STRATEGY= 1      ERROR MATRIX ACCURATE 
  EXT PARAMETER                  PARABOLIC         MINOS ERRORS        
  NO.   NAME      VALUE            ERROR      NEGATIVE      POSITIVE   
   1  p0          -1.03795e+17   1.41421e+00   at limit      at limit   
   2  p1          -1.03795e+17   1.41421e+00   at limit      at limit   
   3  p2          -1.03795e+17   1.41421e+00   at limit      at limit   
   4  p3          -1.03795e+17   1.41421e+00   at limit      at limit   
   5  p4          -1.03795e+17   1.41421e+00   at limit      at limit   
   6  p5          -1.03795e+17   1.41421e+00   at limit      at limit   
(int)0

(Before, I had referenced patch version ‘f’, but I did this in the current d0 sw environment now, which has ‘b’. I don’t think that’s it though).

BTW: Why is the output so verbose? Is there some default verbosity flag, the vale of which was changed between those versions?