[vz-dev] Bug in C++Port von vzlogger - Puffer entleert sich nicht mehr

Kai Krueger kai.krueger at itwm.fraunhofer.de
Thu Aug 9 16:10:23 CEST 2012


Hallo,

> auf in die nächste Runde :-)
>
> Am 07.08.2012 um 08:23 schrieb Kai Krueger:
>>...
>> d.h. in meinem Fall faellt der Logger wieder auf die Fuesse und baut die
>> Verbindung neu auf.
> hab's auch gleich mal getestet - Segmentation fault
> Details: [1]
> das Gleiche nochmal mit strace: [2] (nur der Schluss davon)
Ich habe mir heute libcurl in dieser hinsicht debugged:

libcurl benutzt fuer das Timeout das SIGALRM. Weiter wird dort im
Signal-Handler ein lonjmp gemacht. Hierzu wird der Stakc gespeichert.
Im Source-Code von Libcurl steht hierzu:

#ifdef HAVE_SIGSETJMP
/* Beware this is a global and unique instance. This is used to store the
   return address that we can jump back to from inside a signal handler. This
   is not thread-safe stuff. */
sigjmp_buf curl_jmpenv;
#endif

vzlogger startet fuer jeden Logger einen Thread. Das Ergbniss ist,
dasz im Falle eines Timeouts (SIGALRM) ein jeder der Threads
(inkl. main) in den Kontext eines Anderen springen kann. Daher dann
der SegFault.

Ergo darf man libcurl nicht mit einem Timeout konfigurieren.


Ich muss mir also fuer das Timeout des curl-calls etwas anderes ausdenken.

Viele Gruesse
Kai



More information about the volkszaehler-dev mailing list