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

From: Masaharu Goto (MXJ02154@nifty.ne.jp)
Date: Wed Mar 07 2001 - 19:25:25 MET


Hello Greg,

About the seg faults problem you reported,

For now, I disabled bytecode compilation for this case.
Cint 5.14.79 detects array initialization with function
argument, and abort bytecode compilation. It slows down 
execution a little, otherwise, user will not notice it.
If you need a speed, I recommend to you to allocate a dynamic
memory area for variable size array in that function.

Thank you
Masaharu Goto


>Date: Thu, 1 Mar 2001 23:51:25 +0100 (MET)
>From: Rene Brun <Rene.Brun@cern.ch>
>To: Gregory Novak <Gregory.Novak@cern.ch>
>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:39 MET