Hallo,
ich habe jetz bei mir auch mal ausprobiert
sudo homegear -e rc 'print_r($hg->listDevices())'
und von Homegear wurde ein coredump geschrieben.
gdb angewendet auf den coredump ergibt bei “where” folgende Ausgabe:
Core was generated by `/usr/bin/homegear -u homegear -g homegear -p /var/run/homegear/homegear.pid'.
Program terminated with signal SIGSEGV, Segmentation fault.
#0 BaseLib::Systems::Peer::getDeviceDescription (this=this@entry=0x37453d0, clientInfo=..., channel=channel@entry=-1, fields=...)
at /usr/include/c++/8/bits/basic_string.h:1031
1031 empty() const _GLIBCXX_NOEXCEPT
[Current thread is 1 (Thread 0x72dc7b80 (LWP 5257))]
(gdb)
(gdb) where
#0 BaseLib::Systems::Peer::getDeviceDescription (this=this@entry=0x37453d0,
clientInfo=std::shared_ptr<BaseLib::RpcClientInfo> (use count 1, weak count 0) = {...}, channel=channel@entry=-1,
fields=std::map with 0 elements) at /usr/include/c++/8/bits/basic_string.h:1031
#1 0x7323ecdc in BidCoS::BidCoSPeer::getDeviceDescription (this=0x37453d0, clientInfo=..., channel=-1, fields=std::map with 0 elements)
at /usr/include/c++/8/bits/stl_tree.h:129
#2 0x76d14f84 in BaseLib::Systems::Peer::getDeviceDescriptions (this=0x37453d0, clientInfo=
std::shared_ptr<BaseLib::RpcClientInfo> (use count 7, weak count 0) = {...}, channels=<optimized out>, fields=std::map with 0 elements)
at /usr/include/c++/8/bits/stl_tree.h:728
#3 0x76cafb4c in BaseLib::Systems::ICentral::listDevices (this=0x72dc7260,
clientInfo=std::shared_ptr<BaseLib::RpcClientInfo> (use count 7, weak count 0) = {...}, channels=<optimized out>,
fields=std::map with 0 elements,
knownDevices=std::shared_ptr<std::set<unsigned long long, std::less<unsigned long long>, std::allocator<unsigned long long> >> (empty) = {...},
checkAcls=false) at /usr/include/c++/8/bits/stl_tree.h:728
#4 0x76caf754 in BaseLib::Systems::ICentral::listDevices (this=0x286dc00, clientInfo=..., channels=<optimized out>,
fields=std::map with 0 elements, checkAcls=false) at /usr/include/c++/8/bits/shared_ptr_base.h:614
#5 0x003d95ec in Homegear::Rpc::RPCListDevices::invoke (this=<optimized out>,
clientInfo=std::shared_ptr<BaseLib::RpcClientInfo> (use count 7, weak count 0) = {...}, parameters=...) at /usr/include/c++/8/bits/stl_tree.h:728
#6 0x004b8d3c in Homegear::ScriptEngine::ScriptEngineServer::processQueueEntry (this=<optimized out>, index=<optimized out>, entry=...)
at /usr/include/c++/8/ext/atomicity.h:96
#7 0x76b035d4 in BaseLib::IQueue::process (this=0x27dd5e0, index=0) at IQueue.cpp:339
#8 0x75a0e9b0 in ?? () from /usr/lib/arm-linux-gnueabihf/libstdc++.so.6
#9 0x76ee7494 in start_thread (arg=0x72dc7b80) at pthread_create.c:486
#10 0x7584bdd8 in ?? () at ../sysdeps/unix/sysv/linux/arm/clone.S:73 from /lib/arm-linux-gnueabihf/libc.so.6
Backtrace stopped: previous frame identical to this frame (corrupt stack?)
Leider reichen meine Programmierkenntnisse nicht aus, um die gdb Ausgabe zu interpretieren aber vielleicht ist das ja trotzdem hilfreich.
Gebt mir bitte einfach kurz Bescheid, wenn ich noch mehr Details liefern soll.
Viele Grüße
FiveEights