tango-controls / cppTango

Moved to gitlab
http://tango-controls.org
41 stars 34 forks source link

Segfault when writing TangoTest.long_image. #815

Closed nleclercq closed 3 years ago

nleclercq commented 3 years ago

Context:

Problem: the following PyTango code generates a crash of TangoTest device:

import tango
tt = tango.DeviceProxy("sys/tg_test/1")
tt.long_image = tt.long_image_ro

The same "write request" works for any other data type and data format - e.g. tt.ulong_image = tt.ulong_image_ro works smoothly.

Crash was also reproduced under Octave and the TestDevice panel.

Crash trace under gdb:

Thread 10 "TangoTest" received signal SIGSEGV, Segmentation fault.
[Switching to Thread 0x7fffedd51700 (LWP 215641)]
__memmove_avx_unaligned_erms () at ../sysdeps/x86_64/multiarch/memmove-vec-unaligned-erms.S:436
436 ../sysdeps/x86_64/multiarch/memmove-vec-unaligned-erms.S: No such file or directory.
(gdb) backtrace 
#0  __memmove_avx_unaligned_erms () at ../sysdeps/x86_64/multiarch/memmove-vec-unaligned-erms.S:436
#1  0x000055555558455c in TangoTest_ns::TangoTest::write_long_image (this=0x55555564a6b0, attr=...) at TangoTest.cpp:2643
#2  0x00005555555a138e in TangoTest_ns::long_imageAttrib::write (this=0x555555647360, dev=0x55555564a6b0, att=...) at ./TangoTestClass.h:745
#3  0x00007ffff7c9331f in Tango::Device_3Impl::write_attributes_34(Tango::AttributeValueList const*, Tango::AttributeValueList_4 const*) ()
   from /lib/x86_64-linux-gnu/libtango.so.9
#4  0x00007ffff7c9a103 in Tango::Device_4Impl::write_attributes_4(Tango::AttributeValueList_4 const&, Tango::ClntIdent const&) () from /lib/x86_64-linux-gnu/libtango.so.9
#5  0x00007ffff74f2599 in omniCallHandle::upcall(omniServant*, omniCallDescriptor&) () from /lib/x86_64-linux-gnu/libomniORB4.so.2
#6  0x00007ffff7e6a0fb in Tango::_impl_Device_4::_dispatch(omniCallHandle&) () from /lib/x86_64-linux-gnu/libtango.so.9
#7  0x00007ffff7e6a5dd in Tango::_impl_Device_5::_dispatch(omniCallHandle&) () from /lib/x86_64-linux-gnu/libtango.so.9
#8  0x00007ffff74eba16 in omni::omniOrbPOA::dispatch(omniCallHandle&, omniLocalIdentity*) () from /lib/x86_64-linux-gnu/libomniORB4.so.2
#9  0x00007ffff74c99be in omniLocalIdentity::dispatch(omniCallHandle&) () from /lib/x86_64-linux-gnu/libomniORB4.so.2
#10 0x00007ffff750fa79 in omni::GIOP_S::handleRequest() () from /lib/x86_64-linux-gnu/libomniORB4.so.2
#11 0x00007ffff75100f0 in omni::GIOP_S::dispatcher() () from /lib/x86_64-linux-gnu/libomniORB4.so.2
#12 0x00007ffff750d65d in omni::giopWorker::execute() () from /lib/x86_64-linux-gnu/libomniORB4.so.2
#13 0x00007ffff74bd568 in omniAsyncWorker::real_run() () from /lib/x86_64-linux-gnu/libomniORB4.so.2
#14 0x00007ffff74be743 in omniAsyncPoolServer::workerRun(omniAsyncWorker*) () from /lib/x86_64-linux-gnu/libomniORB4.so.2
#15 0x00007ffff74bd0d1 in omniAsyncWorker::mid_run() () from /lib/x86_64-linux-gnu/libomniORB4.so.2
#16 0x00007ffff7e2a7b2 in Tango::create_PyPerThData(omni::omniInterceptors::createThread_T::info_T&) () from /lib/x86_64-linux-gnu/libtango.so.9
#17 0x00007ffff74be6b4 in omniAsyncWorker::run(void*) () from /lib/x86_64-linux-gnu/libomniORB4.so.2
#18 0x00007ffff73ed448 in omni_thread_wrapper () from /lib/x86_64-linux-gnu/libomnithread.so.4
#19 0x00007ffff73b4609 in start_thread (arg=<optimized out>) at pthread_create.c:477
#20 0x00007ffff6f8e293 in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95
nleclercq commented 3 years ago

Sorry, this is actually a TangoTest issue.