[vz-users] vzlogger stürzt immer ab

Matthias Behr mbehr at mcbehr.de
Tue Mar 10 21:38:07 CET 2015


> Am 10.03.2015 um 21:13 schrieb Andreas Götz <cpuidle at gmail.com>:
> 
> Könnten wir testweise auf den commit vor dem join der curl sessions gehen um zu schauen ob das die Ursache ist?
> 

Ist ein Versuch wert. Kannst du einfach testen:
In der Config bei middleware jeweils andere Strings nutzen („http://localhost“ <http://localhost%e2%80%9c/>, „Http://…“,HTtp://…“,…) dann werden wie früher 6 parallel Curl Sessions genutzt.

Wenn der Fehler weiterhin auftritt, könntest du auf alten Stand zurückgehen.

Nach deiner Config hast du 6 Channels. D.h. der problematische Thread ist tatsächlich ein Logging Thread. Könnte auch gut Problem innerhalb libcurl sein (ggf. auch timing durch CurlSessionHandler,… verursacht).

Kannst du auch mal ein valgrind machen? (von ca. 1 Min. sollte massig reichen. Braucht kein Crash dabei zu sein.)


> Viele Grüße, Andreas
> 
> 
> 
> 
>> Am 10.03.2015 um 20:17 schrieb Matthias Behr <mbehr at mcbehr.de>:
>> 
>> Hallo,
>> 
>> Danke!
>> 
>> Komisch, irgendjemand schickt ein SIGABRT.
>> 
>> Entweder intern (z.B: indirekt durch malloc/free (gerade weil du da eine andere Lib nutzt) oder von außen.
>> 
>> Wir müssen rausbekommen, welcher Thread das ist. Die meisten Threads warten wie geplant:
>> 
>> #8 pthread_join ist in main() Thread
>> #2, #3, #4, #7, #9 pthread_cond_wait -> logging_thread
>> #6 poll ? -> reading_thread: MeterSO?
>> #5 nanosleep -> reading_thread?
>> 
>> #1 ??? der macht Probleme. 
>> 
>> Wir müssen herausbekommen, was Thread #1 eigentlich macht. Könnte auch aus einer Lib sein (z.B. libcurl,…)
>> 
>> Schickst du noch mal deine komplette Config? (5 Channel?)
>> 
>> 
>> 
>>> Am 10.03.2015 um 06:07 schrieb oderwas at gmx.net:
>>> 
>>> Hallo Matthias,
>>> 
>>> ich fand den bt wenig aussagekräftig, daher habe ich es noch detaillierter aufgerufen:
>>> 
>>> # gdb /usr/local/bin/vzlogger core.vzlogger.26305.stromzaehler.1425931568 
>>> GNU gdb (GDB) 7.4.1-debian
>>> Copyright (C) 2012 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 "arm-linux-gnueabihf".
>>> For bug reporting instructions, please see:
>>> <http://www.gnu.org/software/gdb/bugs/>...
>>> Reading symbols from /usr/local/bin/vzlogger...done.[New LWP 26310]
>>> [New LWP 26311]
>>> [New LWP 26313]
>>> [New LWP 26307]
>>> [New LWP 26306]
>>> [New LWP 26309]
>>> [New LWP 26308]
>>> [New LWP 26305]
>>> [New LWP 26312]
>>> [Thread debugging using libthread_db enabled]
>>> Using host libthread_db library "/lib/arm-linux-gnueabihf/libthread_db.so.1".
>>> Core was generated by `vzlogger'.
>>> Program terminated with signal 6, Aborted.
>>> #0  0xb699ef50 in raise ()
>>> from /lib/arm-linux-gnueabihf/libc.so.6
>>> (gdb) thread apply all bt full
>>> 
>>> Thread 9 (Thread 0xb2fff400 (LWP 26312)):
>>> #0  0xb6ede7a4 in pthread_cond_wait@@GLIBC_2.4 ()
>>> from /lib/arm-linux-gnueabihf/libpthread.so.0
>>> No symbol table info available.
>>> #1  0x00060c54 in Buffer::wait(pthread_cond_t*) ()
>>>  at /home/pi/vzlogger_mb/vzlogger/include/Buffer.hpp:68
>>>      std::__ioinit = {
>>>        static _S_refcount = <optimized out>, 
>>>        static _S_synced_with_stdio = <optimized out>}
>>> #2  0x00060d38 in Channel::wait() ()
>>>  at /home/pi/vzlogger_mb/vzlogger/include/Channel.hpp:86
>>>      std::__ioinit = {
>>>        static _S_refcount = <optimized out>, 
>>>        static _S_synced_with_stdio = <optimized out>}
>>> #3  0x00064d84 in logging_thread(void*) ()
>>>  at /home/pi/vzlogger_mb/vzlogger/src/threads.cpp:209
>>>      std::__ioinit = {
>>>        static _S_refcount = <optimized out>, 
>>>        static _S_synced_with_stdio = <optimized out>}
>>> #4  0xb6ed9e90 in start_thread ()
>>> from /lib/arm-linux-gnueabihf/libpthread.so.0
>>> No symbol table info available.
>>> ---Type <return> to continue, or q <return> to quit---
>>> #5  0xb6a3f4e8 in ?? ()
>>> from /lib/arm-linux-gnueabihf/libc.so.6
>>> No symbol table info available.
>>> #6  0xb6a3f4e8 in ?? ()
>>> from /lib/arm-linux-gnueabihf/libc.so.6
>>> No symbol table info available.
>>> Backtrace stopped: previous frame identical to this frame (corrupt stack?)
>>> 
>>> Thread 8 (Thread 0xb63da340 (LWP 26305)):
>>> #0  0xb6edb274 in pthread_join ()
>>> from /lib/arm-linux-gnueabihf/libpthread.so.0
>>> No symbol table info available.
>>> #1  0x000616fc in MeterMap::stopped() ()
>>>  at /home/pi/vzlogger_mb/vzlogger/src/MeterMap.cpp:90
>>>      std::__ioinit = {
>>>        static _S_refcount = <optimized out>, 
>>>        static _S_synced_with_stdio = <optimized out>}
>>> #2  0x00045ec8 in main ()
>>>  at /home/pi/vzlogger_mb/vzlogger/src/vzlogger.cpp:446
>>>      long_options = {{name = 0x109304 "config", 
>>>          has_arg = 1, flag = 0x0, val = 99}, {
>>>          name = 0x10930c "log", has_arg = 1, 
>>>          flag = 0x0, val = 111}, {
>>>          name = 0x109310 "daemon", has_arg = 1, 
>>>          flag = 0x0, val = 100}, {
>>> ---Type <return> to continue, or q <return> to quit---
>>>          name = 0x109318 "httpd", has_arg = 0, 
>>>          flag = 0x0, val = 108}, {
>>>          name = 0x109320 "httpd-port", 
>>>          has_arg = 1, flag = 0x0, val = 112}, {
>>>          name = 0x10932c "register", 
>>>          has_arg = 0, flag = 0x0, val = 114}, {
>>>          name = 0x109338 "verbose", 
>>>          has_arg = 1, flag = 0x0, val = 118}, {
>>>          name = 0x109340 "help", has_arg = 0, 
>>>          flag = 0x0, val = 104}, {
>>>          name = 0x109348 "version", 
>>>          has_arg = 0, flag = 0x0, val = 86}, {
>>>          name = 0x0, has_arg = 0, flag = 0x0, 
>>>          val = 0}}
>>>      std::__ioinit = {
>>>        static _S_refcount = <optimized out>, 
>>>        static _S_synced_with_stdio = <optimized out>}
>>>      options = {_config = "/etc/vzlogger.conf", 
>>>        _log = "/var/log/vzlogger.log", 
>>>        _logfd = 0xc5d498, _port = 8080, 
>>>        _verbosity = 15, _comet_timeout = 30, 
>>>        _buffer_length = 600, _retry_pause = 30, 
>>>        _channel_index = -1, _daemon = -1, 
>>>        _local = 0, _logging = -1, 
>>>        _doRegistration = 0}
>>>      gSkippedFailed = 0
>>>      long_options_descs = {
>>>        0x108e60 "configuration file", 
>>> ---Type <return> to continue, or q <return> to quit---
>>>        0x108e74 "log file", 
>>>        0x108e80 "run in background", 
>>>        0x108e94 "activate local interface (tiny HTTPd which serves live readings)", 
>>>        0x108ed8 "TCP port for HTTPd", 
>>>        0x108eec "register device", 
>>>        0x108efc "enable verbose output", 
>>>        0x108f14 "show this help", 
>>>        0x108f24 "show version of vzlogger", 0x0}
>>>      gStop = false
>>>      mappings = {
>>>        _mappings = std::vector of length 2, capacity 2 = {{_meter = 
>>>  std::tr1::shared_ptr (count 2, weak 0) 0xc5a370, 
>>>            _channels = std::vector of length 3, capacity 3 = {
>>> 
>>>  std::tr1::shared_ptr (count 1, weak 0) 0xc5c268, std::tr1::shared_ptr (count 1, weak 0) 0xc5c348, 
>>>              std::tr1::shared_ptr (count 1, weak 0) 0xc5c608}, _thread_running = true, 
>>>            _thread = 3057484800}, {
>>>            _meter = std::tr1::shared_ptr (count 2, weak 0) 0xc5cc50, 
>>>            _channels = std::vector of length 3, capacity 3 = {
>>>              std::tr1::shared_ptr (count 1, weak 0) 0xc5cd38, 
>>>              std::tr1::shared_ptr (count 1, weak 0) 0xc5c---Type <return> to continue, or q <return> -- quit--
>>> fa0, 
>>>              std::tr1::shared_ptr (count 1, weak 0) 0xc5d138}, _thread_running = true, _thread = 3019895808}}}
>>> 
>>> Thread 7 (Thread 0xb53d8400 (LWP 26308)):
>>> #0  0xb6ede7a4 in pthread_cond_wait@@GLIBC_2.4 ()
>>> from /lib/arm-linux-gnueabihf/libpthread.so.0
>>> No symbol table info available.
>>> #1  0x00060c54 in Buffer::wait(pthread_cond_t*) ()
>>>  at /home/pi/vzlogger_mb/vzlogger/include/Buffer.hpp:68
>>>      std::__ioinit = {
>>>        static _S_refcount = <optimized out>, 
>>>        static _S_synced_with_stdio = <optimized out>}
>>> #2  0x00060d38 in Channel::wait() ()
>>>  at /home/pi/vzlogger_mb/vzlogger/include/Channel.hpp:86
>>>      std::__ioinit = {
>>>        static _S_refcount = <optimized out>, 
>>>        static _S_synced_with_stdio = <optimized out>}
>>> #3  0x00064d84 in logging_thread(void*) ()
>>>  at /home/pi/vzlogger_mb/vzlogger/src/threads.cpp:209
>>>      std::__ioinit = {
>>>        static _S_refcount = <optimized out>, 
>>>        static _S_synced_with_stdio = <optimized out>}
>>> ---Type <return> to continue, or q <return> to quit---
>>> #4  0xb6ed9e90 in start_thread ()
>>> from /lib/arm-linux-gnueabihf/libpthread.so.0
>>> No symbol table info available.
>>> #5  0xb6a3f4e8 in ?? ()
>>> from /lib/arm-linux-gnueabihf/libc.so.6
>>> No symbol table info available.
>>> #6  0xb6a3f4e8 in ?? ()
>>> from /lib/arm-linux-gnueabihf/libc.so.6
>>> No symbol table info available.
>>> Backtrace stopped: previous frame identical to this frame (corrupt stack?)
>>> 
>>> Thread 6 (Thread 0xb49ff400 (LWP 26309)):
>>> #0  0xb6a35af0 in poll ()
>>> from /lib/arm-linux-gnueabihf/libc.so.6
>>> No symbol table info available.
>>> #1  0xb6a4ccf4 in ?? ()
>>> from /lib/arm-linux-gnueabihf/libc.so.6
>>> No symbol table info available.
>>> #2  0x00000000 in ?? ()
>>> No symbol table info available.
>>> 
>>> Thread 5 (Thread 0xb63d8400 (LWP 26306)):
>>> #0  0xb6a0d200 in nanosleep ()
>>> from /lib/arm-linux-gnueabihf/libc.so.6
>>> No symbol table info available.
>>> #1  0xb6a4ccf4 in ?? ()
>>> from /lib/arm-linux-gnueabihf/libc.so.6
>>> No symbol table info available.
>>> ---Type <return> to continue, or q <return> to quit---
>>> #2  0x00000000 in ?? ()
>>> No symbol table info available.
>>> 
>>> Thread 4 (Thread 0xb5bd8400 (LWP 26307)):
>>> #0  0xb6ede7a4 in pthread_cond_wait@@GLIBC_2.4 ()
>>> from /lib/arm-linux-gnueabihf/libpthread.so.0
>>> No symbol table info available.
>>> #1  0x00060c54 in Buffer::wait(pthread_cond_t*) ()
>>>  at /home/pi/vzlogger_mb/vzlogger/include/Buffer.hpp:68
>>>      std::__ioinit = {
>>>        static _S_refcount = <optimized out>, 
>>>        static _S_synced_with_stdio = <optimized out>}
>>> #2  0x00060d38 in Channel::wait() ()
>>>  at /home/pi/vzlogger_mb/vzlogger/include/Channel.hpp:86
>>>      std::__ioinit = {
>>>        static _S_refcount = <optimized out>, 
>>>        static _S_synced_with_stdio = <optimized out>}
>>> #3  0x00064d84 in logging_thread(void*) ()
>>>  at /home/pi/vzlogger_mb/vzlogger/src/threads.cpp:209
>>>      std::__ioinit = {
>>>        static _S_refcount = <optimized out>, 
>>>        static _S_synced_with_stdio = <optimized out>}
>>> #4  0xb6ed9e90 in start_thread ()
>>> ---Type <return> to continue, or q <return> to quit---
>>> from /lib/arm-linux-gnueabihf/libpthread.so.0
>>> No symbol table info available.
>>> #5  0xb6a3f4e8 in ?? ()
>>> from /lib/arm-linux-gnueabihf/libc.so.6
>>> No symbol table info available.
>>> #6  0xb6a3f4e8 in ?? ()
>>> from /lib/arm-linux-gnueabihf/libc.so.6
>>> No symbol table info available.
>>> Backtrace stopped: previous frame identical to this frame (corrupt stack?)
>>> 
>>> Thread 3 (Thread 0xb27ff400 (LWP 26313)):
>>> #0  0xb6ede7a4 in pthread_cond_wait@@GLIBC_2.4 ()
>>> from /lib/arm-linux-gnueabihf/libpthread.so.0
>>> No symbol table info available.
>>> #1  0x00060c54 in Buffer::wait(pthread_cond_t*) ()
>>>  at /home/pi/vzlogger_mb/vzlogger/include/Buffer.hpp:68
>>>      std::__ioinit = {
>>>        static _S_refcount = <optimized out>, 
>>>        static _S_synced_with_stdio = <optimized out>}
>>> #2  0x00060d38 in Channel::wait() ()
>>>  at /home/pi/vzlogger_mb/vzlogger/include/Channel.hpp:86
>>>      std::__ioinit = {
>>>        static _S_refcount = <optimized out>, 
>>>        static _S_synced_with_stdio = <optimized out>}
>>> ---Type <return> to continue, or q <return> to quit---
>>> #3  0x00064d84 in logging_thread(void*) ()
>>>  at /home/pi/vzlogger_mb/vzlogger/src/threads.cpp:209
>>>      std::__ioinit = {
>>>        static _S_refcount = <optimized out>, 
>>>        static _S_synced_with_stdio = <optimized out>}
>>> #4  0xb6ed9e90 in start_thread ()
>>> from /lib/arm-linux-gnueabihf/libpthread.so.0
>>> No symbol table info available.
>>> #5  0xb6a3f4e8 in ?? ()
>>> from /lib/arm-linux-gnueabihf/libc.so.6
>>> No symbol table info available.
>>> #6  0xb6a3f4e8 in ?? ()
>>> from /lib/arm-linux-gnueabihf/libc.so.6
>>> No symbol table info available.
>>> Backtrace stopped: previous frame identical to this frame (corrupt stack?)
>>> 
>>> Thread 2 (Thread 0xb37ff400 (LWP 26311)):
>>> #0  0xb6ede7a4 in pthread_cond_wait@@GLIBC_2.4 ()
>>> from /lib/arm-linux-gnueabihf/libpthread.so.0
>>> No symbol table info available.
>>> #1  0x00060c54 in Buffer::wait(pthread_cond_t*) ()
>>>  at /home/pi/vzlogger_mb/vzlogger/include/Buffer.hpp:68
>>>      std::__ioinit = {
>>>        static _S_refcount = <optimized out>, 
>>>        static _S_synced_with_stdio = <optimized o---Type <return> to continue, or q <return> to quit---
>>> ut>}
>>> #2  0x00060d38 in Channel::wait() ()
>>>  at /home/pi/vzlogger_mb/vzlogger/include/Channel.hpp:86
>>>      std::__ioinit = {
>>>        static _S_refcount = <optimized out>, 
>>>        static _S_synced_with_stdio = <optimized out>}
>>> #3  0x00064d84 in logging_thread(void*) ()
>>>  at /home/pi/vzlogger_mb/vzlogger/src/threads.cpp:209
>>>      std::__ioinit = {
>>>        static _S_refcount = <optimized out>, 
>>>        static _S_synced_with_stdio = <optimized out>}
>>> #4  0xb6ed9e90 in start_thread ()
>>> from /lib/arm-linux-gnueabihf/libpthread.so.0
>>> No symbol table info available.
>>> #5  0xb6a3f4e8 in ?? ()
>>> from /lib/arm-linux-gnueabihf/libc.so.6
>>> No symbol table info available.
>>> #6  0xb6a3f4e8 in ?? ()
>>> from /lib/arm-linux-gnueabihf/libc.so.6
>>> No symbol table info available.
>>> Backtrace stopped: previous frame identical to this frame (corrupt stack?)
>>> 
>>> Thread 1 (Thread 0xb3fff400 (LWP 26310)):
>>> #0  0xb699ef50 in raise ()
>>> ---Type <return> to continue, or q <return> to quit---
>>> from /lib/arm-linux-gnueabihf/libc.so.6
>>> No symbol table info available.
>>> #1  0xb69a0304 in abort ()
>>> from /lib/arm-linux-gnueabihf/libc.so.6
>>> No symbol table info available.
>>> #2  0x00000020 in ?? ()
>>> No symbol table info available.
>>> #3  0x00000020 in ?? ()
>>> No symbol table info available.
>>> Backtrace stopped: previous frame identical to this frame (corrupt stack?)
>>> 
>>> 
>>> Beste Grüße 
>>> 
>>> Markus
>> 
>> Gruß
>> 
>> Matthias Behr
>> 

Gruß

Matthias Behr

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://demo.volkszaehler.org/pipermail/volkszaehler-users/attachments/20150310/8a35be6d/attachment-0001.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: smime.p7s
Type: application/pkcs7-signature
Size: 5256 bytes
Desc: not available
URL: <http://demo.volkszaehler.org/pipermail/volkszaehler-users/attachments/20150310/8a35be6d/attachment-0001.bin>


More information about the volkszaehler-users mailing list