Problem in C++; program state has been reset PyROOT


ROOT Version (6.12/06):
Platform, compiler (Arch-Linux , python 3.6.5):


Hi guys, I having troubles running TH2F in PyROOT.
This is my code.

def plotRADEC(data,  name):
    from ROOT import TCanvas, TGraph,  TH2F,  TH2,  TH1
    from ROOT import gROOT, gSystem,  Double
    from array import array
    import numpy as np

    c1 =  TCanvas('c1', '', 800, 600)
    c1.SetBottomMargin( 0.15 )
    c1.SetTopMargin( 0.05 )
    c1.SetLeftMargin( 0.15 )
    c1.SetRightMargin( 0.15 )

    #gr = TGraph( len(data['dec']) - 1, data['dec'], data['ra'] )
    
    nbins =  len(data['dec'])
    #px, py = Double(), Double()
    px =  array('f',  data['dec'])
    py =  array('f',  data['ra'])
    gr = TH2F('gr', '',  nbins , np.min(data['dec']),  np.max(data['dec']), nbins, np.min(data['ra']),  np.max(data['ra']) )
    for i in range(nbins):
        #print(i, data['dec'][i], data['ra'][i] )
        #px = data['dec'][i]
        #py =  data['ra'][i]
        gr.Fill(px[i], py[i])
    gr.Draw('aitoff')
    c1.Print(name)

name is a string, and data is a python dictionary where data[‘ra’] and data[‘dec’] are arrays.
This is the full output of the problem.


 *** Break *** segmentation violation



===========================================================
There was a crash.
This is the entire stack trace of all threads:
===========================================================

Thread 2 (Thread 0x7f6ffe870700 (LWP 24514)):
#0  0x00007f702185344a in pthread_cond_timedwait

GLIBC_2.3.2 () from /usr/lib/libpthread.so.0
#1  0x00007f70210458c2 in PyEval_RestoreThread () from /usr/lib/libpython3.6m.so.1.0
#2  0x00007f702101c31d in ?? () from /usr/lib/libpython3.6m.so.1.0
#3  0x00007f702108a645 in _PyCFunction_FastCallDict () from /usr/lib/libpython3.6m.so.1.0
#4  0x00007f70210579fb in ?? () from /usr/lib/libpython3.6m.so.1.0
#5  0x00007f7021045fba in _PyEval_EvalFrameDefault () from /usr/lib/libpython3.6m.so.1.0
#6  0x00007f7021057fa8 in PyEval_EvalCodeEx () from /usr/lib/libpython3.6m.so.1.0
#7  0x00007f70210e5136 in ?? () from /usr/lib/libpython3.6m.so.1.0
#8  0x00007f702109a39b in PyObject_Call () from /usr/lib/libpython3.6m.so.1.0
#9  0x00007f70210476f3 in _PyEval_EvalFrameDefault () from /usr/lib/libpython3.6m.so.1.0
#10 0x00007f702105753b in ?? () from /usr/lib/libpython3.6m.so.1.0
#11 0x00007f7021057abe in ?? () from /usr/lib/libpython3.6m.so.1.0
#12 0x00007f7021045fba in _PyEval_EvalFrameDefault () from /usr/lib/libpython3.6m.so.1.0
#13 0x00007f702105753b in ?? () from /usr/lib/libpython3.6m.so.1.0
#14 0x00007f7021057abe in ?? () from /usr/lib/libpython3.6m.so.1.0
#15 0x00007f7021045fba in _PyEval_EvalFrameDefault () from /usr/lib/libpython3.6m.so.1.0
#16 0x00007f702105704b in _PyFunction_FastCallDict () from /usr/lib/libpython3.6m.so.1.0
#17 0x00007f702109956f in _PyObject_FastCallDict () from /usr/lib/libpython3.6m.so.1.0
#18 0x00007f702109a2b3 in _PyObject_Call_Prepend () from /usr/lib/libpython3.6m.so.1.0
#19 0x00007f702109a39b in PyObject_Call () from /usr/lib/libpython3.6m.so.1.0
#20 0x00007f702110f586 in ?? () from /usr/lib/libpython3.6m.so.1.0
#21 0x00007f702184d0bc in start_thread () from /usr/lib/libpthread.so.0
#22 0x00007f70215822ff in clone () from /usr/lib/libc.so.6

Thread 1 (Thread 0x7f7021c4a540 (LWP 24490)):
#0  0x00007f702154f582 in waitpid () from /usr/lib/libc.so.6
#1  0x00007f70214cd21f in do_system () from /usr/lib/libc.so.6
#2  0x00007f700ab71a24 in TUnixSystem::StackTrace() () from /usr/lib/root/libCore.so
#3  0x00007f700ab7425e in TUnixSystem::DispatchSignals(ESignals) () from /usr/lib/root/libCore.so
#4  <signal handler called>
#5  0x00007f6ffd2b09d6 in TH2F::AddBinContent(int) () from /usr/lib/root/libHist.so
#6  0x00007f6ffd2a8495 in TH2::Fill(double, double) () from /usr/lib/root/libHist.so
#7  0x00007f7021aac053 in ?? ()
#8  0x00005591a5036a40 in ?? ()
#9  0x00007ffd421ec594 in ?? ()
#10 0x00007ffd421ec594 in ?? ()
#11 0x00007ffd421ec4c0 in ?? ()
#12 0x0000000200000000 in ?? ()
#13 0x00005591a5034ce0 in ?? ()
#14 0x00007ffd421ec580 in ?? ()
#15 0x00007f700b73d2c3 in FastCall(long, void*, void*, void*) () from /usr/lib/root/libPyROOT.so
===========================================================


The lines below might hint at the cause of the crash.
You may get help by asking at the ROOT forum http://root.cern.ch/forum.
Only if you are really convinced it is a bug in ROOT then please submit a
report at http://root.cern.ch/bugs. Please post the ENTIRE stack trace
from above as an attachment in addition to anything else
that might help us fixing this issue.
===========================================================
#5  0x00007f6ffd2b09d6 in TH2F::AddBinContent(int) () from /usr/lib/root/libHist.so
#6  0x00007f6ffd2a8495 in TH2::Fill(double, double) () from /usr/lib/root/libHist.so
#7  0x00007f7021aac053 in ?? ()
#8  0x00005591a5036a40 in ?? ()
#9  0x00007ffd421ec594 in ?? ()
#10 0x00007ffd421ec594 in ?? ()
#11 0x00007ffd421ec4c0 in ?? ()
#12 0x0000000200000000 in ?? ()
#13 0x00005591a5034ce0 in ?? ()
#14 0x00007ffd421ec580 in ?? ()
#15 0x00007f700b73d2c3 in FastCall(long, void*, void*, void*) () from /usr/lib/root/libPyROOT.so
===========================================================


Traceback (most recent call last):
  File "readcatalog.py", line 139, in <module>
    main()
  File "readcatalog.py", line 136, in main
    plotRADEC(data,  args.outname)
  File "readcatalog.py", line 99, in plotRADEC
    gr.Fill(px[i], py[i])
TypeError: none of the 5 overloaded methods succeeded. Full details:
  int TH2::Fill(const char* namex, const char* namey, double w) =>
    takes at least 3 arguments (2 given)
  int TH2::Fill(double x, double y) =>
    problem in C++; program state has been reset
  int TH2::Fill(double x, const char* namey, double w) =>
    takes at least 3 arguments (2 given)
  int TH2::Fill(const char* namex, double y, double w) =>
    takes at least 3 arguments (2 given)
  int TH2::Fill(double x, double y, double w) =>
    takes at least 3 arguments (2 given)

Any ideas about how to handle it?

Hi @andalenavals,

There seems to be an issue with the types of px[i] and py[i], what type are they? The right matching should be to TH2::Fill(double x, double y)

Cheers,
Enric

Thank @etejedor, I found the problem the number of bins was to high 100000x100000.
in any case, thanks again.

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.