Skip to content

Instantly share code, notes, and snippets.

@brunoseivam
Created May 3, 2019 21:38
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save brunoseivam/dc3d0807c1c249ea2fbcaca2a08c278a to your computer and use it in GitHub Desktop.
Save brunoseivam/dc3d0807c1c249ea2fbcaca2a08c278a to your computer and use it in GitHub Desktop.
martins@dad89bed9628:~/workspace/libca-bug-poc/iocBoot/ioc-bug$ ./st.cmd
#!../../bin/linux-x86_64-debug/bug
< envPaths
epicsEnvSet("IOC","ioc-bug")
epicsEnvSet("TOP","/home/martins/workspace/libca-bug-poc")
epicsEnvSet("EPICS_BASE","/usr/lib/epics")
epicsEnvSet("PYEPICS_LIBCA", "/usr/lib/epics/lib/linux-x86_64-debug/libca.so")
epicsEnvSet("PREFIX", "bug:")
dbLoadDatabase("/home/martins/workspace/libca-bug-poc/dbd/bug.dbd",0,0)
bug_registerRecordDeviceDriver(pdbbase)
py "import bug"
py "bug.build()"
pyDevSup thread libca ctx = 94530045966208
dbLoadRecords("/home/martins/workspace/libca-bug-poc/db/bug.db", "P=bug:")
var atExitDebug 1
iocInit()
Starting iocInit
############################################################################
## EPICS R3.15.6-1+frib1+0~20190305190007.9+debian09~1.gbp1d596a
## EPICS Base built Mar 5 2019
############################################################################
cas warning: Configured TCP port was unavailable.
cas warning: Using dynamically assigned TCP port 40031,
cas warning: but now two or more servers share the same UDP port.
cas warning: Depending on your IP kernel this server may not be
cas warning: reachable with UDP unicast (a host's IP in EPICS_CA_ADDR_LIST)
iocRun: All initialization complete
launcher thread libca ctx = 140461066949216
epics> exit()
atExit exitDatabase((nil))
atExit twdShutdown((nil))
atExit cacExitHandler((nil))
atExit &cleanupPy((nil))
(AtIocExit) launcher thread libca ctx = 140461066949216
Segmentation fault (core dumped)
martins@dad89bed9628:~/workspace/libca-bug-poc/iocBoot/ioc-bug$ gdb ../../bin/linux-x86_64-debug/bug core
GNU gdb (Debian 7.12-6) 7.12.0.20161007-git
Copyright (C) 2016 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law. Type "show copying"
and "show warranty" for details.
This GDB was configured as "x86_64-linux-gnu".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>.
Find the GDB manual and other documentation resources online at:
<http://www.gnu.org/software/gdb/documentation/>.
For help, type "help".
Type "apropos word" to search for commands related to "word"...
Reading symbols from ../../bin/linux-x86_64-debug/bug...done.
warning: core file may not match specified executable file.
[New LWP 11811]
[New LWP 11814]
[New LWP 11813]
[New LWP 11815]
[New LWP 11819]
[New LWP 11817]
[New LWP 11818]
[New LWP 11820]
[New LWP 11829]
[New LWP 11825]
[New LWP 11826]
[New LWP 11832]
[New LWP 11830]
[New LWP 11828]
[New LWP 11834]
[New LWP 11831]
[New LWP 11835]
[New LWP 11827]
[New LWP 11824]
[New LWP 11823]
[New LWP 11822]
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
Core was generated by `../../bin/linux-x86_64-debug/bug ./st.cmd'.
Program terminated with signal SIGSEGV, Segmentation fault.
#0 0x00007fbff8851878 in epicsThreadPrivateGet (id=0x0) at ../../../src/libCom/osi/os/posix/osdThread.c:888
888 ../../../src/libCom/osi/os/posix/osdThread.c: No such file or directory.
[Current thread is 1 (Thread 0x7fbff9395b80 (LWP 11811))]
(gdb) py-bt
Traceback (most recent call first):
File "/usr/lib/python3/dist-packages/epics/ca.py", line 845, in pend_event
ret = libca.ca_pend_event(timeout)
File "/usr/lib/python3/dist-packages/epics/ca.py", line 858, in poll
pend_event(evt)
File "/usr/lib/python3/dist-packages/epics/ca.py", line 512, in wrapper
return fcn(*args, **kwds)
File "/usr/lib/python3/dist-packages/epics/pv.py", line 1051, in disconnect
ca.poll(evt=1.e-3, iot=1.0)
File "/usr/lib/python3/dist-packages/epics/pv.py", line 54, in wrapped
return func(self, *args, **kwargs)
File "/usr/lib/python3/dist-packages/epics/pv.py", line 1058, in __del__
self.disconnect()
Garbage-collecting
(gdb) bt
#0 0x00007fbff8851878 in epicsThreadPrivateGet (id=0x0) at ../../../src/libCom/osi/os/posix/osdThread.c:888
#1 0x00007fbff78aa763 in ca_client_context::pendEvent(double const&) ()
from /usr/lib/x86_64-linux-gnu/libca.so.3.15.6
#2 0x00007fbfed75152e in ca_pend_event (timeout=0.001) at ../access.cpp:475
#3 0x00007fbff46d6aa8 in ffi_call_unix64 ()
from /usr/lib/python3.5/lib-dynload/_ctypes.cpython-35m-x86_64-linux-gnu.so
#4 0x00007fbff46d650a in ffi_call () from /usr/lib/python3.5/lib-dynload/_ctypes.cpython-35m-x86_64-linux-gnu.so
#5 0x00007fbff46cfcb4 in _call_function_pointer (argcount=1, resmem=0x7fff52af5ec0, restype=<optimized out>,
atypes=0x7fff52af5e80, avalues=0x7fff52af5ea0, pProc=0x7fbfed7514a9 <ca_pend_event(ca_real)>, flags=4353)
at ./Modules/_ctypes/callproc.c:813
#6 _ctypes_callproc () at ./Modules/_ctypes/callproc.c:1151
#7 0x00007fbff46ce53c in PyCFuncPtr_call.lto_priv.76 () at ./Modules/_ctypes/_ctypes.c:3876
#8 0x00007fbff7fa1a37 in PyObject_Call (func=<_FuncPtr(__name__='ca_pend_event') at remote 0x7fbfedae3f20>,
arg=<optimized out>, kw=<optimized out>) at ../Objects/abstract.c:2166
#9 0x00007fbff7f6c2ed in do_call (nk=<optimized out>, na=1, pp_stack=0x7fff52af6180, func=<optimized out>)
at ../Python/ceval.c:4951
#10 call_function (oparg=<optimized out>, pp_stack=0x7fff52af6180) at ../Python/ceval.c:4747
#11 PyEval_EvalFrameEx (f=<optimized out>, throwflag=<optimized out>) at ../Python/ceval.c:3251
#12 0x00007fbff8032074 in _PyEval_EvalCodeWithName.lto_priv.1758 (_co=<optimized out>, globals=<optimized out>,
locals=<optimized out>, args=<optimized out>, argcount=1, kws=0x7fbfed9ca8c0, kwcount=0, defs=0x7fbfed9f20d0,
defcount=1, kwdefs=0x0, closure=0x0, name='pend_event', qualname='pend_event') at ../Python/ceval.c:4033
#13 0x00007fbff7f6eadf in fast_function (nk=<optimized out>, na=<optimized out>, n=<optimized out>,
pp_stack=0x7fff52af6370, func=<optimized out>) at ../Python/ceval.c:4828
#14 call_function (oparg=<optimized out>, pp_stack=0x7fff52af6370) at ../Python/ceval.c:4745
#15 PyEval_EvalFrameEx (f=<optimized out>, throwflag=<optimized out>) at ../Python/ceval.c:3251
#16 0x00007fbff8032074 in _PyEval_EvalCodeWithName.lto_priv.1758 (_co=<optimized out>, globals=<optimized out>,
locals=<optimized out>, args=<optimized out>, argcount=0, kws=0x7fbfed9b0740, kwcount=2, defs=0x7fbfedb2b860,
defcount=2, kwdefs=0x0, closure=0x0, name=0x0, qualname=0x0) at ../Python/ceval.c:4033
#17 0x00007fbff8032153 in PyEval_EvalCodeEx (_co=<optimized out>, globals=<optimized out>, locals=<optimized out>,
args=<optimized out>, argcount=<optimized out>, kws=<optimized out>, kwcount=2, defs=0x7fbfedb2b860, defcount=2,
kwdefs=0x0, closure=0x0) at ../Python/ceval.c:4054
#18 0x00007fbff7ec5655 in function_call.lto_priv.380 (func=<function at remote 0x7fbfeda09ea0>, arg=(),
kw={'iot': <float at remote 0x7fbfedfab630>, 'evt': <float at remote 0x7fbfedfab618>})
at ../Objects/funcobject.c:627
#19 0x00007fbff7fa1a37 in PyObject_Call (func=<function at remote 0x7fbfeda09ea0>, arg=<optimized out>,
kw=<optimized out>) at ../Objects/abstract.c:2166
#20 0x00007fbff7f69647 in ext_do_call (nk=<optimized out>, na=<optimized out>, flags=<optimized out>,
pp_stack=0x7fff52af6658, func=<function at remote 0x7fbfeda09ea0>) at ../Python/ceval.c:5049
#21 PyEval_EvalFrameEx (f=<optimized out>, throwflag=<optimized out>) at ../Python/ceval.c:3290
#22 0x00007fbff8032074 in _PyEval_EvalCodeWithName.lto_priv.1758 (_co=<optimized out>, globals=<optimized out>,
locals=<optimized out>, args=<optimized out>, argcount=0, kws=0x7fbfed9a2968, kwcount=2, defs=0x0, defcount=0,
kwdefs=0x0, closure=(<cell at remote 0x7fbfeda4c468>,), name='poll', qualname='poll') at ../Python/ceval.c:4033
#23 0x00007fbff7f6eadf in fast_function (nk=<optimized out>, na=<optimized out>, n=<optimized out>,
pp_stack=0x7fff52af6840, func=<optimized out>) at ../Python/ceval.c:4828
#24 call_function (oparg=<optimized out>, pp_stack=0x7fff52af6840) at ../Python/ceval.c:4745
#25 PyEval_EvalFrameEx (f=<optimized out>, throwflag=<optimized out>) at ../Python/ceval.c:3251
#26 0x00007fbff8032074 in _PyEval_EvalCodeWithName.lto_priv.1758 (_co=<optimized out>, globals=<optimized out>,
locals=<optimized out>, args=<optimized out>, argcount=1, kws=0x7fbff92d2060, kwcount=0, defs=0x0, defcount=0,
kwdefs=0x0, closure=0x0, name=0x0, qualname=0x0) at ../Python/ceval.c:4033
#27 0x00007fbff8032153 in PyEval_EvalCodeEx (_co=<optimized out>, globals=<optimized out>, locals=<optimized out>,
args=<optimized out>, argcount=<optimized out>, kws=<optimized out>, kwcount=0, defs=0x0, defcount=0,
kwdefs=0x0, closure=0x0) at ../Python/ceval.c:4054
#28 0x00007fbff7ec5655 in function_call.lto_priv.380 (func=<function at remote 0x7fbfeda15840>,
arg=(<PV(chid=<c_long at remote 0x7fbfed9c3840>, access_callbacks=[], verbose=False, pvname='SOME', ftype=13, callbacks={}, _put_complete=None, connection_callbacks=[], connection_timeout=<float at remote 0x7fbfedfab228>, context=140461066949216, connected=False, form='time', _args={'chid': None, 'write_access': None, 'lower_ctrl_limit': None, 'upper_disp_limit': None, 'lower_alarm_limit': None, 'lower_disp_limit': None, 'host': None, 'upper_warning_limit': None, 'units': None, 'enum_strs': None, 'access': None, 'status': None, 'upper_alarm_limit': None, 'ftype': None, 'pvname': ---Type <return> to continue, or q <return> to quit---
None, 'precision': None, 'severity': None, 'nanoseconds': None, 'count': None, 'timestamp': None, 'value': None, 'posixseconds': None, 'char_value': None, 'read_access': None, 'upper_ctrl_limit': None, 'lower_warning_limit': None}, _conn_started=False, _monref=None, _user_max_count=None, _auto_monitor=None, _monref_mask=None) at remote 0x7fbfed9ee320>,), kw={}) at ../Objects/funcobject.c:627
#29 0x00007fbff7fa1a37 in PyObject_Call (func=<function at remote 0x7fbfeda15840>, arg=<optimized out>,
kw=<optimized out>) at ../Objects/abstract.c:2166
#30 0x00007fbff7f69647 in ext_do_call (nk=<optimized out>, na=<optimized out>, flags=<optimized out>,
pp_stack=0x7fff52af6b28, func=<function at remote 0x7fbfeda15840>) at ../Python/ceval.c:5049
#31 PyEval_EvalFrameEx (f=<optimized out>, throwflag=<optimized out>) at ../Python/ceval.c:3290
#32 0x00007fbff8032074 in _PyEval_EvalCodeWithName.lto_priv.1758 (_co=<optimized out>, globals=<optimized out>,
locals=<optimized out>, args=<optimized out>, argcount=1, kws=0x7fbfeda1a5a0, kwcount=0, defs=0x0, defcount=0,
kwdefs=0x0, closure=(<cell at remote 0x7fbfeda12528>,), name='disconnect', qualname='PV.disconnect')
at ../Python/ceval.c:4033
#33 0x00007fbff7f6eadf in fast_function (nk=<optimized out>, na=<optimized out>, n=<optimized out>,
pp_stack=0x7fff52af6d10, func=<optimized out>) at ../Python/ceval.c:4828
#34 call_function (oparg=<optimized out>, pp_stack=0x7fff52af6d10) at ../Python/ceval.c:4745
#35 PyEval_EvalFrameEx (f=<optimized out>, throwflag=<optimized out>) at ../Python/ceval.c:3251
#36 0x00007fbff8032074 in _PyEval_EvalCodeWithName.lto_priv.1758 (_co=<optimized out>, globals=<optimized out>,
locals=<optimized out>, args=<optimized out>, argcount=1, kws=0x0, kwcount=0, defs=0x0, defcount=0, kwdefs=0x0,
closure=0x0, name=0x0, qualname=0x0) at ../Python/ceval.c:4033
#37 0x00007fbff8032153 in PyEval_EvalCodeEx (_co=<optimized out>, globals=<optimized out>, locals=<optimized out>,
args=<optimized out>, argcount=<optimized out>, kws=<optimized out>, kwcount=0, defs=0x0, defcount=0,
kwdefs=0x0, closure=0x0) at ../Python/ceval.c:4054
#38 0x00007fbff7ec5558 in function_call.lto_priv.380 (func=<function at remote 0x7fbfeda15950>,
arg=(<PV(chid=<c_long at remote 0x7fbfed9c3840>, access_callbacks=[], verbose=False, pvname='SOME', ftype=13, callbacks={}, _put_complete=None, connection_callbacks=[], connection_timeout=<float at remote 0x7fbfedfab228>, context=140461066949216, connected=False, form='time', _args={'chid': None, 'write_access': None, 'lower_ctrl_limit': None, 'upper_disp_limit': None, 'lower_alarm_limit': None, 'lower_disp_limit': None, 'host': None, 'upper_warning_limit': None, 'units': None, 'enum_strs': None, 'access': None, 'status': None, 'upper_alarm_limit': None, 'ftype': None, 'pvname': None, 'precision': None, 'severity': None, 'nanoseconds': None, 'count': None, 'timestamp': None, 'value': None, 'posixseconds': None, 'char_value': None, 'read_access': None, 'upper_ctrl_limit': None, 'lower_warning_limit': None}, _conn_started=False, _monref=None, _user_max_count=None, _auto_monitor=None, _monref_mask=None) at remote 0x7fbfed9ee320>,), kw=0x0) at ../Objects/funcobject.c:627
#39 0x00007fbff7fa1a37 in PyObject_Call (func=<function at remote 0x7fbfeda15950>, arg=<optimized out>,
kw=<optimized out>) at ../Objects/abstract.c:2166
#40 0x00007fbff7fed95c in method_call.lto_priv.286 (func=<function at remote 0x7fbfeda15950>,
arg=(<PV(chid=<c_long at remote 0x7fbfed9c3840>, access_callbacks=[], verbose=False, pvname='SOME', ftype=13, callbacks={}, _put_complete=None, connection_callbacks=[], connection_timeout=<float at remote 0x7fbfedfab228>, context=140461066949216, connected=False, form='time', _args={'chid': None, 'write_access': None, 'lower_ctrl_limit': None, 'upper_disp_limit': None, 'lower_alarm_limit': None, 'lower_disp_limit': None, 'host': None, 'upper_warning_limit': None, 'units': None, 'enum_strs': None, 'access': None, 'status': None, 'upper_alarm_limit': None, 'ftype': None, 'pvname': None, 'precision': None, 'severity': None, 'nanoseconds': None, 'count': None, 'timestamp': None, 'value': None, 'posixseconds': None, 'char_value': None, 'read_access': None, 'upper_ctrl_limit': None, 'lower_warning_limit': None}, _conn_started=False, _monref=None, _user_max_count=None, _auto_monitor=None, _monref_mask=None) at remote 0x7fbfed9ee320>,), kw=0x0) at ../Objects/classobject.c:330
#41 0x00007fbff7fa1a37 in PyObject_Call (func=<method at remote 0x7fbff44db7c8>, arg=<optimized out>,
kw=<optimized out>) at ../Objects/abstract.c:2166
#42 0x00007fbff8030b77 in PyEval_CallObjectWithKeywords (func=<method at remote 0x7fbff44db7c8>, arg=(),
kw=<optimized out>) at ../Python/ceval.c:4595
#43 0x00007fbff7e5a347 in slot_tp_finalize (
self=<PV(chid=<c_long at remote 0x7fbfed9c3840>, access_callbacks=[], verbose=False, pvname='SOME', ftype=13, callbacks={}, _put_complete=None, connection_callbacks=[], connection_timeout=<float at remote 0x7fbfedfab228>, context=140461066949216, connected=False, form='time', _args={'chid': None, 'write_access': None, 'lower_ctrl_limit': None, 'upper_disp_limit': None, 'lower_alarm_limit': None, 'lower_disp_limit': None, 'host': None, 'upper_warning_limit': None, 'units': None, 'enum_strs': None, 'access': None, 'status': None, 'upper_alarm_limit': None, 'ftype': None, 'pvname': None, 'precision': None, 'severity': None, 'nanoseconds': None, 'count': None, 'timestamp': None, 'value': None, 'posixseconds': None, 'char_value': None, 'read_access': None, 'upper_ctrl_limit': None, 'lower_warning_limit': None}, _conn_started=False, _monref=None, _user_max_count=None, _auto_monitor=None, _monref_mask=None) at remote 0x7fbfed9ee320>)---Type <return> to continue, or q <return> to quit---
at ../Objects/typeobject.c:6343
#44 0x00007fbff7fb8ebf in finalize_garbage (collectable=0x7fff52af7090) at ../Modules/gcmodule.c:808
#45 collect (generation=generation@entry=2, n_collected=n_collected@entry=0x0,
n_uncollectable=n_uncollectable@entry=0x0, nofail=nofail@entry=1) at ../Modules/gcmodule.c:1003
#46 0x00007fbff7fb95c1 in _PyGC_CollectNoFail () at ../Modules/gcmodule.c:1605
#47 0x00007fbff7fd5210 in PyImport_Cleanup () at ../Python/import.c:428
#48 0x00007fbff7fd54c4 in Py_Finalize () at ../Python/pylifecycle.c:576
#49 0x00007fbff8f7890d in cleanupPy (junk=0x0) at ../setup.c:296
#50 0x00007fbff8842853 in epicsExitCallAtExitsPvt (pep=0x55f97d54c5d0) at ../../../src/libCom/misc/epicsExit.c:95
#51 0x00007fbff884291a in epicsExitCallAtExits () at ../../../src/libCom/misc/epicsExit.c:113
#52 0x00007fbff8842b5b in epicsExit (status=0) at ../../../src/libCom/misc/epicsExit.c:181
#53 0x000055f97baa6437 in main (argc=2, argv=0x7fff52af7368) at ../bugMain.cpp:21
(gdb) quit
martins@dad89bed9628:~/workspace/libca-bug-poc/iocBoot/ioc-bug$
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment