RE: CINT: Re: [ROOT] Strange seg faults

From: Philippe Canal (pcanal@fnal.gov)
Date: Fri Mar 02 2001 - 17:22:22 MET


Hi Gregory,

Not that CINT should not help you there but the lines:

 Float_t sliceMedian2(Float_t x[], Float_t y[], const Int_t n) {
    Float_t sortedX[n];
 ...

are, as you probably know, illegal C++.

You might want to replace it by:

 Float_t sliceMedian2(Float_t x[], Float_t y[], const Int_t n) {
    Float_t * sortedX = new Float_t[n];
 ...

Philippe.

PS. With such a modification, you would then be able to compile it....

-----Original Message-----
From: Rene Brun [mailto:Rene.Brun@cern.ch]
Sent: Thursday, March 01, 2001 4:51 PM
To: Gregory Novak
Cc: roottalk@pcroot.cern.ch; rootdev@pcroot.cern.ch
Subject: CINT: Re: [ROOT] Strange seg faults


Hi Greg,
This seems to be a CINT optimization problem.
It runs with optimisation level 3 or below but not with level 4
select
root > .O3

I am forwarding the problem to Masa.

Rene Brun

On Thu, 1 Mar 2001, Gregory Novak wrote:

> I'm using Root 2.25.03 and I'm getting segmentation faults I don't
> understand.  This has something to do with array allocation and
> function arguments.  I'm loading a bunch of c++ code via .L, containing
> the following two functions:
>
> void profMedian2(Float_t x[], Float_t y[], const Int_t nBins) {
>   for (Int_t i=0; i<nBins; i++) {
>     sliceMedian2(x,y,nBins);
>   }
> }
>
> Float_t sliceMedian2(Float_t x[], Float_t y[], const Int_t n) {
>   Float_t sortedX[n];
>   return 0;
> }
>
> Then I have the following in a macro.
>  {
>   Float_t x[500];
>   Float_t y[500];
>   profMedian2(x, y, 500);
> }
>
> When I run the macro, Root gives me a segmentation fault.  There are a few
> things that are confusing: The seg fault comes when root tries to call
> sliceMedian2, but I can run it directly without trouble.  If I change the
> arguments of sliceMedian2 or profMedian2, the seg fault goes away.  Also,
> if I take out the for loop around the call to sliceMedian2, the seg fault
> goes away.  This is in spite of the fact that the seg fault comes on the
> first pass through the loop.
>
> So, is there any solution to this?
>
> Thanks!
> Greg
>
>
>



This archive was generated by hypermail 2b29 : Tue Jan 01 2002 - 17:50:38 MET