Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Crash on failed jitting #16578

Open
1 task
bendavid opened this issue Oct 2, 2024 · 0 comments
Open
1 task

Crash on failed jitting #16578

bendavid opened this issue Oct 2, 2024 · 0 comments
Assignees
Labels

Comments

@bendavid
Copy link
Contributor

bendavid commented Oct 2, 2024

Check duplicate issues.

  • Checked for duplicates

Description

When jitting code with errors in some cases, the failure leads to a segfault in cling.

I didn't manage a very minimal reproducer, so here's the actual code which provoked this. (including an Eigen dependency, where the include of the Eigen headers seems to be relevant to provoking the crash)

Reproducer

test.h

#define WREMNANTS_EtaPtCorrelatedEfficiency_h

#include "TROOT.h"
#include "TH2D.h"
#include "TH3D.h"
#include "TFile.h"
#include "TMath.h"

#include <eigen3/Eigen/Dense>
// #include <eigen3/Eigen/Eigenvalues>
//#include <stdlib.h>
//#include <stdio.h>
#include <cstdlib> 
#include <cstdio>
#include <cmath>
#include <iostream>
#include <string>
#include <fstream>
#include <cassert>

namespace wrem {

    // ================================================
    // Some functions to be used for EtaPtCorrelatedEfficiency
    // ================================================
    // TODO:
    // put functions in another header file
    // write a base class to make all functions derive from, at least for polynomials
    // write a generic class for polynomials
    class pol3_custom {
    public:
        pol3_custom() {};
        pol3_custom(const double& xMin, const double& xRange) {
            xMinNorm_ = xMin;
            xRangeNorm_ = xRange;
        };
        double operator() (std::vector<double> &x, std::vector<double> &p) {
            double xscaled = (x[0] - xMinNorm_) / xRangeNorm_;
            return p[0] + p[1]*xscaled + p[2]*std::pow(xscaled,2) + p[3]*std::pow(xscaled,3);
        }
        void setPolynomialArgument(const double& xMin, const double& xRange) {
            xMinNorm_ = xMin;
            xRangeNorm_ = xRange;
        }
        int getNparams() { return nparams_; }
    protected:
        // to normalize polynomial argument
        int nparams_ = 4;
        double xMinNorm_ = 0.0;
        double xRangeNorm_ = 1.0;
    };

    class pol4_custom {
    public:
        pol4_custom() {};
        pol4_custom(const double& xMin, const double& xRange) {
            xMinNorm_ = xMin;
            xRangeNorm_ = xRange;
        };
        double operator() (double *x, double *p) {
            double xscaled = (x[0] - xMinNorm_) / xRangeNorm_;
            return p[0] + p[1]*xscaled + p[2]*std::pow(xscaled,2) + p[3]*std::pow(xscaled,3) + p[4]*std::pow(xscaled,4);
        }
        void setPolynomialArgument(const double& xMin, const double& xRange) {
            xMinNorm_ = xMin;
            xRangeNorm_ = xRange;
        }
        int getNparams() { return nparams_; }
    protected:
        // to normalize polynomial argument
        int nparams_ = 5;
        double xMinNorm_ = 0.0;
        double xRangeNorm_ = 1.0;
    };

    // // TODO: could use a generic polynomial using previous classes
    // class erfPol2_custom {
    // public:
    //     erfPol2_custom() {};
    //     erfPol2_custom(const double& xMin, const double& xRange) {
    //         xMinNorm_ = xMin;
    //         xRangeNorm_ = xRange;
    //     };
    //     double operator() (double *x, double *p) {
    //         double xscaled = (x[0] - xMinNorm_) / xRangeNorm_;
    //         return (p[0] + p[1]*xscaled + p[2]*std::pow(xscaled,2)) * (1.0 + TMath::Erf((x[0]-p[3])/p[4]));
    //     }
    //     void setPolynomialArgument(const double& xMin, const double& xRange) {
    //         xMinNorm_ = xMin;
    //         xRangeNorm_ = xRange;
    //     }
    //     int getNparams() { return nparams_; }
    // protected:
    //     // to normalize polynomial argument
    //     int nparams_ = 5;
    //     double xMinNorm_ = 0.0;
    //     double xRangeNorm_ = 1.0;
    // };

    // ================================================
    
    class EtaPtCorrelatedEfficiency {

        // TODO: if a destructor is explicitly defined, add copy constructor and assignment operator, even though I won't use any of those
        
    public:
  
        EtaPtCorrelatedEfficiency(TH3D* histocov, TH2D* histoerf, double ptmin, double ptmax);
        // ~EtaPtCorrelatedEfficiency();
        double DoEffSyst(int etabin, double pt, double *variations, bool getDiff=false);
        std::vector<double> DoEffSyst(int etabin, int ipar);
        std::vector<double> DoEffSyst(int etabin);
        // void setPtRange(double ptmin, double ptmax) { ptmin_ = ptmin; ptmax_ = ptmax; } // not used currently, should modify function ranges accordingly
        void setSmoothingFunction(const std::string& name);
        void setEigenShift(double shift) {eigenShift_ = shift; }
        
    protected:

        // Eigen::MatrixXd covariance(int etabin);
        void DoHessianShifts(int etabin, int ipar, const std::vector<double> &inpars, std::vector<double> &outpars);

        std::string smoothFunctionName_ = "cheb3";
        TH3D *covhist_;
        TH2D *parhist_;
        int ndim_ = 4;
        double ptmin_ = 0.0;
        double ptmax_ = 100.0;
        double eigenShift_ = 1.0;
        TF1* function_ = nullptr;
        // list of predefined functions
        TF1* tf1_pol3_ = new TF1("tf1_pol3_", "pol3", ptmin_, ptmax_);
        TF1* tf1_pol2_ = new TF1("tf1_pol2_", "pol2", ptmin_, ptmax_);
        TF1* tf1_erf_ = new TF1("tf1_erf_", "[0] * (1.0 + TMath::Erf((x-[1])/[2]))", ptmin_, ptmax_);
        pol3_custom pol3_tf_;
        TF1* tf1_pol3_tf_ = nullptr;
        pol4_custom pol4_tf_;
        TF1* tf1_pol4_tf_ = nullptr;
        // erfPol2_custom erfPol2_tf_;
        // TF1* tf1_erfPol2_tf_ = nullptr;
    };


    EtaPtCorrelatedEfficiency::EtaPtCorrelatedEfficiency(TH3D* histocov, TH2D* histoerf, double ptmin, double ptmax):
        pol3_tf_(ptmin, ptmax),
        pol4_tf_(ptmin, ptmax)
        // erfPol2_tf_(ptmin, ptmax)
    {
        covhist_ = histocov;
        int ny = covhist_->GetNbinsY();
        int nz = covhist_->GetNbinsZ();
        assert(ny==nz);
        ndim_ = ny;
        parhist_ = histoerf;
        ptmin_ = ptmin;
        ptmax_ = ptmax;
        setSmoothingFunction("pol3_tf");
    }
    // EtaPtCorrelatedEfficiency::~EtaPtCorrelatedEfficiency() {
    //     function_ = nullptr;
    //     delete tf1_pol3_;
    //     delete tf1_pol2_;
    //     delete tf1_erf_;
    //     delete tf1_pol3_tf_;
    //     delete tf1_pol4_tf_;
    // //     delete tf1_erfPol2_tf_;
    // }

    void EtaPtCorrelatedEfficiency::setSmoothingFunction(const std::string& name) {
        // TODO: if case I add more functions, find a smarte way to find the good one
        smoothFunctionName_ = name;
        if (name.find("pol3_tf") != std::string::npos) {     
            tf1_pol3_tf_ = new TF1("tf1_pol3_tf_", pol3_tf_, ptmin_, ptmax_, pol3_tf_.getNparams());
            function_ = tf1_pol3_tf_;
            ndim_ = tf1_pol3_tf_->GetNpar();
        } else if (name.find("pol4_tf") != std::string::npos) {
            tf1_pol4_tf_ = new TF1("tf1_pol4_tf_", pol4_tf_, ptmin_, ptmax_, pol4_tf_.getNparams());
            function_ = tf1_pol4_tf_;
            ndim_ = tf1_pol4_tf_->GetNpar();
        // } else if (name.find("erfPol2_tf") != std::string::npos) {
        //     tf1_erfPol2_tf_ = new TF1("tf1_erfPol2_tf_", erfPol2_tf_, ptmin_, ptmax_, erfPol2_tf_.getNparams());
        //     function_ = tf1_erfPol2_tf_;
        //     ndim_ = tf1_erfPol2_tf_->GetNpar();
        } else if (name.find("pol3") != std::string::npos) {
            function_ = tf1_pol3_;
            ndim_ = 4;   
        } else if (name.find("pol2") != std::string::npos) {
            function_ = tf1_pol2_;
            ndim_ = 3;
        } else if (name.find("erf") != std::string::npos) {
            function_ = tf1_erf_;
            ndim_ = 3;
        } else {
            std::cout << "Smoothing function " << name << " not implemented. Abort" << std::endl;
            exit(EXIT_FAILURE);
        }
        return;
    }

    // Eigen::MatrixXd EtaPtCorrelatedEfficiency::covariance(int etabin) {
    //     Eigen::MatrixXd covMat(ndim_, ndim_);
    //     for (int i = 0; i < ndim_; ++i) {
    //         for (int j = 0; j < ndim_; ++j) {
    //             covMat(i,j) = covhist_->GetBinContent(etabin, i+1, j+1);
    //         }
    //     }
    //     // std::cout << "covariance matrix = " << std::endl << covMat << std::endl;
    //     return covMat;
    // }

//     void EtaPtCorrelatedEfficiency::DoHessianShifts(int etabin, int ipar, const std::vector<double> &inpars, std::vector<double> &outpars) {
//
//         // diagonalize the covariance matrix
//         Eigen::MatrixXd covMat = covariance(etabin);
//         Eigen::SelfAdjointEigenSolver<Eigen::MatrixXd> es(covMat);
//         Eigen::VectorXd eigenv = es.eigenvalues();
//         Eigen::MatrixXd transformation = es.eigenvectors();
//         // std::cout << "Transformation = " << std::endl << transformation << std::endl;
//
//         // transform the pars in the diagonal basis
//         const unsigned int npars = transformation.rows();
//         const unsigned int neigenvectors = transformation.cols();
//         Eigen::VectorXd inparv(npars);
//         for (unsigned int jpar = 0; jpar < npars; ++jpar) {
//             inparv[jpar] = inpars[jpar];
//         }
//         // std::cout << "inparv = " << std::endl << inparv << std::endl;
//         Eigen::VectorXd diagbasisv = transformation.transpose()*inparv;
//         // std::cout << "diagbasisv = " << std::endl << diagbasisv << std::endl;
//
//         // shift one of them by the diagonal uncertainty (uncorrelated in this basis)
//         diagbasisv[ipar] += eigenShift_ * sqrt(eigenv[ipar]);
//
//         // transform the pars back in the original basis
//         // Eigen::VectorXd outparv = transformation*diagbasisv;
//         Eigen::VectorXd outparv = inparv + eigenShift_ * sqrt(eigenv[ipar]) * transformation.col(ipar);
//         for (unsigned int ieig = 0; ieig < neigenvectors; ++ieig) {
//             outpars[ieig] = outparv[ieig];
//         }
//         // std::cout << "outparv = " << std::endl << outparv << std::endl;
//         return;
//     }

    // method to return the actual function variations for all parameters filling the externally provided array "variations"
    double EtaPtCorrelatedEfficiency::DoEffSyst(int etabin, double pt, double *variations, bool getDiff=false) {

        std::vector<double> inpars(ndim_);
        std::vector<double> outpars(ndim_);
    
        for (int ipar = 0; ipar < ndim_; ++ipar) {
            inpars[ipar] = parhist_->GetBinContent(etabin, ipar+1);
        }
    
        double nominal = function_->EvalPar(&pt, inpars.data());
        
        for (int ipar = 0; ipar < ndim_; ++ipar) {
            // DoHessianShifts(etabin, ipar, inpars, outpars);
            variations[ipar] = function_->EvalPar(&pt, outpars.data());
            if (getDiff) variations[ipar] -= nominal;
        }
        return nominal;
    }

    // method to return a single row of parameters
    std::vector<double> EtaPtCorrelatedEfficiency::DoEffSyst(int etabin, int ipar) {

        if (ipar >= ndim_) {
            std::cout << "EtaPtCorrelatedEfficiency::DoEffSyst(int etabin, int ipar):  ipar >= " << ndim_ << " (" << ipar << ")" << std::endl;
            exit(EXIT_FAILURE);
        }
        std::vector<double> inpars(ndim_);
        std::vector<double> outpars(ndim_);
    
        for (int jpar = 0; jpar < ndim_; ++jpar) {
            inpars[jpar] = parhist_->GetBinContent(etabin, jpar+1);
        }
        DoHessianShifts(etabin, ipar, inpars, outpars);
        std::vector<double> ret(ndim_, 0.0);
        for (int jpar = 0; jpar < ndim_; ++jpar) {
            ret[jpar] = outpars[jpar];
        }
        return ret;
    }

    // method to return all parameters in a single vector
    std::vector<double> EtaPtCorrelatedEfficiency::DoEffSyst(int etabin) {

        std::vector<double> inpars(ndim_);
        std::vector<double> outpars(ndim_);
    
        for (int jpar = 0; jpar < ndim_; ++jpar) {
            inpars[jpar] = parhist_->GetBinContent(etabin, jpar+1);
        }

        std::vector<double> ret(ndim_*ndim_, 0.0);
        for (int ipar = 0; ipar < ndim_; ++ipar) {
            DoHessianShifts(etabin, ipar, inpars, outpars);
            for (int jpar = 0; jpar < ndim_; ++jpar) {
                ret[ipar * ndim_ + jpar] = outpars[jpar];
            }
        }
        return ret;
    }
    
}
    
#endif

test.py

import ROOT

ROOT.gInterpreter.Declare('#include "test.h"')

output:

In module 'Hist':
/cvmfs/sft-nightlies.cern.ch/lcg/nightlies/dev3/Wed/ROOT/HEAD/x86_64-el9-gcc14-opt/include/TF1.h:764:73: error: no matching function for call to 'GetTheRightOp'
         using Fnc_t = typename ROOT::Internal::GetFunctorType<decltype(ROOT::Internal::GetTheRightOp(&Func::operator()))>::type;
                                                                        ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/cvmfs/sft-nightlies.cern.ch/lcg/nightlies/dev3/Wed/ROOT/HEAD/x86_64-el9-gcc14-opt/include/TF1.h:401:41: note: in instantiation of member function 'ROOT::Internal::TF1Builder<wrem::pol3_custom>::Build' requested here
      ROOT::Internal::TF1Builder<Func>::Build(this, f);
                                        ^
./test.h:173:32: note: in instantiation of function template specialization 'TF1::TF1<wrem::pol3_custom>' requested here
            tf1_pol3_tf_ = new TF1("tf1_pol3_tf_", pol3_tf_, ptmin_, ptmax_, pol3_tf_.getNparams());
                               ^
/cvmfs/sft-nightlies.cern.ch/lcg/nightlies/dev3/Wed/ROOT/HEAD/x86_64-el9-gcc14-opt/include/TF1.h:207:12: note: candidate template ignored: could not match 'const T *' against 'std::vector<double> &'
      auto GetTheRightOp(T(F::*opPtr)(const T *, const double *)) -> decltype(opPtr)
           ^
/cvmfs/sft-nightlies.cern.ch/lcg/nightlies/dev3/Wed/ROOT/HEAD/x86_64-el9-gcc14-opt/include/TF1.h:213:12: note: candidate template ignored: could not match 'T (const T *, const double *) const' against 'double (std::vector<double> &, std::vector<double> &)'
      auto GetTheRightOp(T(F::*opPtr)(const T *, const double *) const) -> decltype(opPtr)
           ^
/cvmfs/sft-nightlies.cern.ch/lcg/nightlies/dev3/Wed/ROOT/HEAD/x86_64-el9-gcc14-opt/include/TF1.h:219:12: note: candidate template ignored: could not match 'T *' against 'std::vector<double> &'
      auto GetTheRightOp(T(F::*opPtr)(T *, double *)) -> decltype(opPtr)
           ^
/cvmfs/sft-nightlies.cern.ch/lcg/nightlies/dev3/Wed/ROOT/HEAD/x86_64-el9-gcc14-opt/include/TF1.h:225:12: note: candidate template ignored: could not match 'T (T *, double *) const' against 'double (std::vector<double> &, std::vector<double> &)'
      auto GetTheRightOp(T(F::*opPtr)(T *, double *) const) -> decltype(opPtr)
           ^
 *** Break *** segmentation violation



===========================================================
There was a crash.
This is the entire stack trace of all threads:
===========================================================
#0  0x00007f7f16f182ca in wait4 () from /lib64/libc.so.6
#1  0x00007f7f16e61953 in do_system () from /lib64/libc.so.6
#2  0x00007f7f08f197d3 in TUnixSystem::StackTrace() () from /cvmfs/sft-nightlies.cern.ch/lcg/views/dev3/Wed/x86_64-el9-gcc14-opt/lib/libCore.so
#3  0x00007f7f170294af in (anonymous namespace)::TExceptionHandlerImp::HandleException(int) () from /cvmfs/sft-nightlies.cern.ch/lcg/views/dev3/Wed/x86_64-el9-gcc14-opt/lib/libcppyy_backend.so
#4  0x00007f7f08f18f91 in TUnixSystem::DispatchSignals(ESignals) () from /cvmfs/sft-nightlies.cern.ch/lcg/views/dev3/Wed/x86_64-el9-gcc14-opt/lib/libCore.so
#5  <signal handler called>
#6  0x00007f7f04c83ed3 in clang::BaseUsingDecl::removeShadowDecl(clang::UsingShadowDecl*) () from /cvmfs/sft-nightlies.cern.ch/lcg/views/dev3/Wed/x86_64-el9-gcc14-opt/lib/libCling.so
#7  0x00007f7f0180d476 in cling::DeclUnloader::VisitDeclContext(clang::DeclContext*) () from /cvmfs/sft-nightlies.cern.ch/lcg/views/dev3/Wed/x86_64-el9-gcc14-opt/lib/libCling.so
#8  0x00007f7f0180d6e3 in cling::DeclUnloader::VisitFunctionDecl(clang::FunctionDecl*, bool) () from /cvmfs/sft-nightlies.cern.ch/lcg/views/dev3/Wed/x86_64-el9-gcc14-opt/lib/libCling.so
#9  0x00007f7f0180d3d0 in cling::DeclUnloader::VisitDeclContext(clang::DeclContext*) () from /cvmfs/sft-nightlies.cern.ch/lcg/views/dev3/Wed/x86_64-el9-gcc14-opt/lib/libCling.so
#10 0x00007f7f0180f270 in cling::DeclUnloader::VisitRecordDecl(clang::RecordDecl*) [clone .part.0] () from /cvmfs/sft-nightlies.cern.ch/lcg/views/dev3/Wed/x86_64-el9-gcc14-opt/lib/libCling.so
#11 0x00007f7f0180f633 in cling::DeclUnloader::VisitClassTemplateSpecializationDecl(clang::ClassTemplateSpecializationDecl*) () from /cvmfs/sft-nightlies.cern.ch/lcg/views/dev3/Wed/x86_64-el9-gcc14-opt/lib/libCling.so
#12 0x00007f7f017d02a5 in cling::TransactionUnloader::unloadDeclarations(cling::Transaction*, cling::DeclUnloader&) () from /cvmfs/sft-nightlies.cern.ch/lcg/views/dev3/Wed/x86_64-el9-gcc14-opt/lib/libCling.so
#13 0x00007f7f017d0792 in cling::TransactionUnloader::RevertTransaction(cling::Transaction*) () from /cvmfs/sft-nightlies.cern.ch/lcg/views/dev3/Wed/x86_64-el9-gcc14-opt/lib/libCling.so
#14 0x00007f7f017afaeb in cling::Interpreter::unload(cling::Transaction&) () from /cvmfs/sft-nightlies.cern.ch/lcg/views/dev3/Wed/x86_64-el9-gcc14-opt/lib/libCling.so
#15 0x00007f7f01848ed8 in cling::IncrementalParser::commitTransaction(llvm::PointerIntPair<cling::Transaction*, 2u, cling::IncrementalParser::EParseResult, llvm::PointerLikeTypeTraits<cling::Transaction*>, llvm::PointerIntPairInfo<cling::Transaction*, 2u, llvm::PointerLikeTypeTraits<cling::Transaction*> > >&, bool) () from /cvmfs/sft-nightlies.cern.ch/lcg/views/dev3/Wed/x86_64-el9-gcc14-opt/lib/libCling.so
#16 0x00007f7f0184a5e8 in cling::IncrementalParser::Compile(llvm::StringRef, cling::CompilationOptions const&) () from /cvmfs/sft-nightlies.cern.ch/lcg/views/dev3/Wed/x86_64-el9-gcc14-opt/lib/libCling.so
#17 0x00007f7f017b10c7 in cling::Interpreter::declare(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, cling::Transaction**) () from /cvmfs/sft-nightlies.cern.ch/lcg/views/dev3/Wed/x86_64-el9-gcc14-opt/lib/libCling.so
#18 0x00007f7f016b9542 in TCling::LoadText(char const*) const () from /cvmfs/sft-nightlies.cern.ch/lcg/views/dev3/Wed/x86_64-el9-gcc14-opt/lib/libCling.so
#19 0x00007f7f016b96aa in TCling::Declare(char const*) () from /cvmfs/sft-nightlies.cern.ch/lcg/views/dev3/Wed/x86_64-el9-gcc14-opt/lib/libCling.so
#20 0x00007f7f0802301b in ?? ()
#21 0x00007ffda9ea3b0f in ?? ()
#22 0x0000000000000000 in ?? ()
===========================================================


The lines below might hint at the cause of the crash. If you see question
marks as part of the stack trace, try to recompile with debugging information
enabled and export CLING_DEBUG=1 environment variable before running.
You may get help by asking at the ROOT forum https://root.cern/forum
preferably using the command (.forum bug) in the ROOT prompt.
Only if you are really convinced it is a bug in ROOT then please submit a
report at https://root.cern/bugs or (preferably) using the command (.gh bug) in
the ROOT prompt. Please post the ENTIRE stack trace
from above as an attachment in addition to anything else
that might help us fixing this issue.
===========================================================
#6  0x00007f7f04c83ed3 in clang::BaseUsingDecl::removeShadowDecl(clang::UsingShadowDecl*) () from /cvmfs/sft-nightlies.cern.ch/lcg/views/dev3/Wed/x86_64-el9-gcc14-opt/lib/libCling.so
#7  0x00007f7f0180d476 in cling::DeclUnloader::VisitDeclContext(clang::DeclContext*) () from /cvmfs/sft-nightlies.cern.ch/lcg/views/dev3/Wed/x86_64-el9-gcc14-opt/lib/libCling.so
#8  0x00007f7f0180d6e3 in cling::DeclUnloader::VisitFunctionDecl(clang::FunctionDecl*, bool) () from /cvmfs/sft-nightlies.cern.ch/lcg/views/dev3/Wed/x86_64-el9-gcc14-opt/lib/libCling.so
#9  0x00007f7f0180d3d0 in cling::DeclUnloader::VisitDeclContext(clang::DeclContext*) () from /cvmfs/sft-nightlies.cern.ch/lcg/views/dev3/Wed/x86_64-el9-gcc14-opt/lib/libCling.so
#10 0x00007f7f0180f270 in cling::DeclUnloader::VisitRecordDecl(clang::RecordDecl*) [clone .part.0] () from /cvmfs/sft-nightlies.cern.ch/lcg/views/dev3/Wed/x86_64-el9-gcc14-opt/lib/libCling.so
#11 0x00007f7f0180f633 in cling::DeclUnloader::VisitClassTemplateSpecializationDecl(clang::ClassTemplateSpecializationDecl*) () from /cvmfs/sft-nightlies.cern.ch/lcg/views/dev3/Wed/x86_64-el9-gcc14-opt/lib/libCling.so
#12 0x00007f7f017d02a5 in cling::TransactionUnloader::unloadDeclarations(cling::Transaction*, cling::DeclUnloader&) () from /cvmfs/sft-nightlies.cern.ch/lcg/views/dev3/Wed/x86_64-el9-gcc14-opt/lib/libCling.so
#13 0x00007f7f017d0792 in cling::TransactionUnloader::RevertTransaction(cling::Transaction*) () from /cvmfs/sft-nightlies.cern.ch/lcg/views/dev3/Wed/x86_64-el9-gcc14-opt/lib/libCling.so
#14 0x00007f7f017afaeb in cling::Interpreter::unload(cling::Transaction&) () from /cvmfs/sft-nightlies.cern.ch/lcg/views/dev3/Wed/x86_64-el9-gcc14-opt/lib/libCling.so
#15 0x00007f7f01848ed8 in cling::IncrementalParser::commitTransaction(llvm::PointerIntPair<cling::Transaction*, 2u, cling::IncrementalParser::EParseResult, llvm::PointerLikeTypeTraits<cling::Transaction*>, llvm::PointerIntPairInfo<cling::Transaction*, 2u, llvm::PointerLikeTypeTraits<cling::Transaction*> > >&, bool) () from /cvmfs/sft-nightlies.cern.ch/lcg/views/dev3/Wed/x86_64-el9-gcc14-opt/lib/libCling.so
#16 0x00007f7f0184a5e8 in cling::IncrementalParser::Compile(llvm::StringRef, cling::CompilationOptions const&) () from /cvmfs/sft-nightlies.cern.ch/lcg/views/dev3/Wed/x86_64-el9-gcc14-opt/lib/libCling.so
#17 0x00007f7f017b10c7 in cling::Interpreter::declare(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, cling::Transaction**) () from /cvmfs/sft-nightlies.cern.ch/lcg/views/dev3/Wed/x86_64-el9-gcc14-opt/lib/libCling.so
#18 0x00007f7f016b9542 in TCling::LoadText(char const*) const () from /cvmfs/sft-nightlies.cern.ch/lcg/views/dev3/Wed/x86_64-el9-gcc14-opt/lib/libCling.so
#19 0x00007f7f016b96aa in TCling::Declare(char const*) () from /cvmfs/sft-nightlies.cern.ch/lcg/views/dev3/Wed/x86_64-el9-gcc14-opt/lib/libCling.so
#20 0x00007f7f0802301b in ?? ()
#21 0x00007ffda9ea3b0f in ?? ()
#22 0x0000000000000000 in ?? ()
===========================================================


 *** Break *** segmentation violation



===========================================================
There was a crash.
This is the entire stack trace of all threads:
===========================================================
#0  0x00007f7f16f182ca in wait4 () from /lib64/libc.so.6
#1  0x00007f7f16e61953 in do_system () from /lib64/libc.so.6
#2  0x00007f7f08f197d3 in TUnixSystem::StackTrace() () from /cvmfs/sft-nightlies.cern.ch/lcg/views/dev3/Wed/x86_64-el9-gcc14-opt/lib/libCore.so
#3  0x00007f7f170293bf in (anonymous namespace)::TExceptionHandlerImp::HandleException(int) () from /cvmfs/sft-nightlies.cern.ch/lcg/views/dev3/Wed/x86_64-el9-gcc14-opt/lib/libcppyy_backend.so
#4  0x00007f7f08f18f91 in TUnixSystem::DispatchSignals(ESignals) () from /cvmfs/sft-nightlies.cern.ch/lcg/views/dev3/Wed/x86_64-el9-gcc14-opt/lib/libCore.so
#5  <signal handler called>
#6  0x00007f7f04c83ed3 in clang::BaseUsingDecl::removeShadowDecl(clang::UsingShadowDecl*) () from /cvmfs/sft-nightlies.cern.ch/lcg/views/dev3/Wed/x86_64-el9-gcc14-opt/lib/libCling.so
#7  0x00007f7f0180d476 in cling::DeclUnloader::VisitDeclContext(clang::DeclContext*) () from /cvmfs/sft-nightlies.cern.ch/lcg/views/dev3/Wed/x86_64-el9-gcc14-opt/lib/libCling.so
#8  0x00007f7f0180d6e3 in cling::DeclUnloader::VisitFunctionDecl(clang::FunctionDecl*, bool) () from /cvmfs/sft-nightlies.cern.ch/lcg/views/dev3/Wed/x86_64-el9-gcc14-opt/lib/libCling.so
#9  0x00007f7f0180d3d0 in cling::DeclUnloader::VisitDeclContext(clang::DeclContext*) () from /cvmfs/sft-nightlies.cern.ch/lcg/views/dev3/Wed/x86_64-el9-gcc14-opt/lib/libCling.so
#10 0x00007f7f0180f270 in cling::DeclUnloader::VisitRecordDecl(clang::RecordDecl*) [clone .part.0] () from /cvmfs/sft-nightlies.cern.ch/lcg/views/dev3/Wed/x86_64-el9-gcc14-opt/lib/libCling.so
#11 0x00007f7f0180f633 in cling::DeclUnloader::VisitClassTemplateSpecializationDecl(clang::ClassTemplateSpecializationDecl*) () from /cvmfs/sft-nightlies.cern.ch/lcg/views/dev3/Wed/x86_64-el9-gcc14-opt/lib/libCling.so
#12 0x00007f7f017d02a5 in cling::TransactionUnloader::unloadDeclarations(cling::Transaction*, cling::DeclUnloader&) () from /cvmfs/sft-nightlies.cern.ch/lcg/views/dev3/Wed/x86_64-el9-gcc14-opt/lib/libCling.so
#13 0x00007f7f017d0792 in cling::TransactionUnloader::RevertTransaction(cling::Transaction*) () from /cvmfs/sft-nightlies.cern.ch/lcg/views/dev3/Wed/x86_64-el9-gcc14-opt/lib/libCling.so
#14 0x00007f7f017afaeb in cling::Interpreter::unload(cling::Transaction&) () from /cvmfs/sft-nightlies.cern.ch/lcg/views/dev3/Wed/x86_64-el9-gcc14-opt/lib/libCling.so
#15 0x00007f7f01848ed8 in cling::IncrementalParser::commitTransaction(llvm::PointerIntPair<cling::Transaction*, 2u, cling::IncrementalParser::EParseResult, llvm::PointerLikeTypeTraits<cling::Transaction*>, llvm::PointerIntPairInfo<cling::Transaction*, 2u, llvm::PointerLikeTypeTraits<cling::Transaction*> > >&, bool) () from /cvmfs/sft-nightlies.cern.ch/lcg/views/dev3/Wed/x86_64-el9-gcc14-opt/lib/libCling.so
#16 0x00007f7f0184a5e8 in cling::IncrementalParser::Compile(llvm::StringRef, cling::CompilationOptions const&) () from /cvmfs/sft-nightlies.cern.ch/lcg/views/dev3/Wed/x86_64-el9-gcc14-opt/lib/libCling.so
#17 0x00007f7f017b10c7 in cling::Interpreter::declare(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, cling::Transaction**) () from /cvmfs/sft-nightlies.cern.ch/lcg/views/dev3/Wed/x86_64-el9-gcc14-opt/lib/libCling.so
#18 0x00007f7f016b9542 in TCling::LoadText(char const*) const () from /cvmfs/sft-nightlies.cern.ch/lcg/views/dev3/Wed/x86_64-el9-gcc14-opt/lib/libCling.so
#19 0x00007f7f016b96aa in TCling::Declare(char const*) () from /cvmfs/sft-nightlies.cern.ch/lcg/views/dev3/Wed/x86_64-el9-gcc14-opt/lib/libCling.so
#20 0x00007f7f0802301b in ?? ()
#21 0x00007ffda9ea3b0f in ?? ()
#22 0x0000000000000000 in ?? ()
===========================================================


The lines below might hint at the cause of the crash. If you see question
marks as part of the stack trace, try to recompile with debugging information
enabled and export CLING_DEBUG=1 environment variable before running.
You may get help by asking at the ROOT forum https://root.cern/forum
preferably using the command (.forum bug) in the ROOT prompt.
Only if you are really convinced it is a bug in ROOT then please submit a
report at https://root.cern/bugs or (preferably) using the command (.gh bug) in
the ROOT prompt. Please post the ENTIRE stack trace
from above as an attachment in addition to anything else
that might help us fixing this issue.
===========================================================
#6  0x00007f7f04c83ed3 in clang::BaseUsingDecl::removeShadowDecl(clang::UsingShadowDecl*) () from /cvmfs/sft-nightlies.cern.ch/lcg/views/dev3/Wed/x86_64-el9-gcc14-opt/lib/libCling.so
#7  0x00007f7f0180d476 in cling::DeclUnloader::VisitDeclContext(clang::DeclContext*) () from /cvmfs/sft-nightlies.cern.ch/lcg/views/dev3/Wed/x86_64-el9-gcc14-opt/lib/libCling.so
#8  0x00007f7f0180d6e3 in cling::DeclUnloader::VisitFunctionDecl(clang::FunctionDecl*, bool) () from /cvmfs/sft-nightlies.cern.ch/lcg/views/dev3/Wed/x86_64-el9-gcc14-opt/lib/libCling.so
#9  0x00007f7f0180d3d0 in cling::DeclUnloader::VisitDeclContext(clang::DeclContext*) () from /cvmfs/sft-nightlies.cern.ch/lcg/views/dev3/Wed/x86_64-el9-gcc14-opt/lib/libCling.so
#10 0x00007f7f0180f270 in cling::DeclUnloader::VisitRecordDecl(clang::RecordDecl*) [clone .part.0] () from /cvmfs/sft-nightlies.cern.ch/lcg/views/dev3/Wed/x86_64-el9-gcc14-opt/lib/libCling.so
#11 0x00007f7f0180f633 in cling::DeclUnloader::VisitClassTemplateSpecializationDecl(clang::ClassTemplateSpecializationDecl*) () from /cvmfs/sft-nightlies.cern.ch/lcg/views/dev3/Wed/x86_64-el9-gcc14-opt/lib/libCling.so
#12 0x00007f7f017d02a5 in cling::TransactionUnloader::unloadDeclarations(cling::Transaction*, cling::DeclUnloader&) () from /cvmfs/sft-nightlies.cern.ch/lcg/views/dev3/Wed/x86_64-el9-gcc14-opt/lib/libCling.so
#13 0x00007f7f017d0792 in cling::TransactionUnloader::RevertTransaction(cling::Transaction*) () from /cvmfs/sft-nightlies.cern.ch/lcg/views/dev3/Wed/x86_64-el9-gcc14-opt/lib/libCling.so
#14 0x00007f7f017afaeb in cling::Interpreter::unload(cling::Transaction&) () from /cvmfs/sft-nightlies.cern.ch/lcg/views/dev3/Wed/x86_64-el9-gcc14-opt/lib/libCling.so
#15 0x00007f7f01848ed8 in cling::IncrementalParser::commitTransaction(llvm::PointerIntPair<cling::Transaction*, 2u, cling::IncrementalParser::EParseResult, llvm::PointerLikeTypeTraits<cling::Transaction*>, llvm::PointerIntPairInfo<cling::Transaction*, 2u, llvm::PointerLikeTypeTraits<cling::Transaction*> > >&, bool) () from /cvmfs/sft-nightlies.cern.ch/lcg/views/dev3/Wed/x86_64-el9-gcc14-opt/lib/libCling.so
#16 0x00007f7f0184a5e8 in cling::IncrementalParser::Compile(llvm::StringRef, cling::CompilationOptions const&) () from /cvmfs/sft-nightlies.cern.ch/lcg/views/dev3/Wed/x86_64-el9-gcc14-opt/lib/libCling.so
#17 0x00007f7f017b10c7 in cling::Interpreter::declare(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, cling::Transaction**) () from /cvmfs/sft-nightlies.cern.ch/lcg/views/dev3/Wed/x86_64-el9-gcc14-opt/lib/libCling.so
#18 0x00007f7f016b9542 in TCling::LoadText(char const*) const () from /cvmfs/sft-nightlies.cern.ch/lcg/views/dev3/Wed/x86_64-el9-gcc14-opt/lib/libCling.so
#19 0x00007f7f016b96aa in TCling::Declare(char const*) () from /cvmfs/sft-nightlies.cern.ch/lcg/views/dev3/Wed/x86_64-el9-gcc14-opt/lib/libCling.so
#20 0x00007f7f0802301b in ?? ()
#21 0x00007ffda9ea3b0f in ?? ()
#22 0x0000000000000000 in ?? ()
===========================================================

ROOT version

   ------------------------------------------------------------------
  | Welcome to ROOT 6.33.01                        https://root.cern |
  | (c) 1995-2024, The ROOT Team; conception: R. Brun, F. Rademakers |
  | Built for linuxx8664gcc on Oct 02 2024, 00:22:18                 |
  | From heads/master@v6-31-01-3406-g2dc2e0f126                      |
  | With g++ (GCC) 14.2.0                                            |
  | Try '.help'/'.?', '.demo', '.license', '.credits', '.quit'/'.q'  |
   ------------------------------------------------------------------

Installation method

lcg nightlies

Operating system

Linux (alma 9)

Additional context

No response

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

2 participants