call ca_clear_event gives a seg fault
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
EPICS Base |
Invalid
|
Undecided
|
Unassigned |
Bug Description
the segmentation fault happends when a client writes to the SYSRESET channel of an IOCSTATS - IOC. This kills the IOC and the call of ca_clear_event() of SYSRESET on the client gives a this error.
What can be seen too: is that all connected channels gets a clean disconnect except SYSRESET.
This happends with our 3.14.12 and with 7.0.3
gdb backtrace of caqtdm(epics 3.14.12):
#0 0x0000000000000000 in ?? ()
#1 0x00007fffee1d2f74 in ca_client_
#2 0x00007fffee1d30d1 in eliminateExcess
#3 ca_clear_
#4 0x00007fffe79e80d6 in ClearMonitor (kData=<value optimized out>) at epicsSubs.c:937
#5 0x00007fffe79e39e5 in Epics3Plugin:
#6 0x00007ffff7d79f39 in CaQtDM_
#7 0x00000030c67f5cbc in QWidget:
#8 0x00000030c6b898eb in QMainWindow:
#9 0x00000030c67aaa0c in QApplicationPri
#10 0x00000030c67b094b in QApplication:
#11 0x00000030bfb57d0c in QCoreApplicatio
#12 0x00000030c67fa711 in QWidgetPrivate:
#13 0x00000030c68134b6 in QApplication:
#14 0x00000030c68213c6 in QApplication:
#15 0x00000030c6849e92 in ?? () from /usr/lib64/
#16 0x00000030b8a40555 in g_main_
#17 0x00000030b8a44d08 in ?? () from /lib64/
#18 0x00000030b8a44ec2 in g_main_
#19 0x00000030bfb7d613 in QEventDispatche
#20 0x00000030c6849b5e in ?? () from /usr/lib64/
#21 0x00000030bfb56752 in QEventLoop:
#22 0x00000030bfb56a1c in QEventLoop:
#23 0x00000030bfb58d09 in QCoreApplicatio
#24 0x000000000040e132 in main ()
gdb backtrace of caqtdm(epics 7.0.3):
#0 0x0000000000000000 in ?? ()
#1 0x00007fffd75df200 in ca_client_
#2 0x00007fffd75c2949 in eliminateExcess
#3 ca_clear_channel (pChan=0xc55a98) at ../access.cpp:371
#4 0x00007fffdc0c590d in ClearMonitor (kData=<optimized out>) at epicsSubs.c:942
#5 0x00007fffdc0c0a3f in Epics3Plugin:
#6 0x00007ffff7b4e531 in CaQtDM_
#7 0x00007ffff5eb5db4 in QWidget:
#8 0x00007ffff62870d3 in QMainWindow:
#9 0x00007ffff5e600ec in QApplicationPri
#10 0x00007ffff5e669c5 in QApplication:
#11 0x00007ffff592e87d in QCoreApplicatio
#12 0x00007ffff5eb1fd9 in QWidgetPrivate:
#13 0x00007ffff5ed0e32 in QApplication:
#14 0x00007ffff5edd98f in QApplication:
#15 0x00007ffff5f04f34 in x11EventSourceD
#16 0x00007ffff1f3f049 in g_main_
#17 0x00007ffff1f3f3a8 in g_main_
#18 0x00007ffff1f3f45c in g_main_
#19 0x00007ffff595d3ae in QEventDispatche
#20 0x00007ffff5f050b6 in QGuiEventDispat
#21 0x00007ffff592d30f in QEventLoop:
#22 0x00007ffff592d65d in QEventLoop:
#23 0x00007ffff5932d29 in QCoreApplicatio
#24 0x000000000040defd in main (argc=4, argv=<optimized out>) at src/caQtDM.cpp:390
Changed in epics-base: | |
status: | New → Invalid |
> #0 0x0000000000000000 in ?? ()
This looks like a jump to NULL, maybe a bad virtual call.
Can this fault be replicated?
If so, can you run with valgrind? This seems like the kind of fault which valgrind could identify.