[vz-dev] 1wirevz Segmentation fault

Thorben Thuermer r00t at constancy.org
Tue Sep 3 00:53:28 CEST 2013


bei einem segfault hilf ein backtrace aus gdb
(und ein mit gcc -g3 kompiliertes binary)
deutlich besser als ein strace...

fuege einfach dem zeile gcc-aufruf beim kompilieren ein '-g3' hinzu,
und starte 1wirevz mit gdb statt strace, starten mit "run",
und dann "bt full" nach dem crash...

- T.

On Mon, 02 Sep 2013 23:10:49 +0200
Andreas Brus <andreas at brus.name> wrote:
> Ich habe heute einen zusätzlichen Sensor (als zweiten) an den dritten 
> Bus angeschlossen.
> Der wurde auch erkannt.
> Und dann das:
> Wieder wie beim ersten Versuch...
> 
> [pid 29460] open("/tmp/1wirevz.pid", O_RDWR|O_CREAT, 0600) = 0
> [pid 29460] fcntl64(0, F_SETLK, {type=F_WRLCK, whence=SEEK_CUR, start=0, 
> len=0}) = 0
> [pid 29460] write(0, "29460\n", 6)      = 6
rueckkehr aus daemonize()

hauptschleife in main()
> [pid 29460] open("/sys/bus/w1/devices/w1_bus_master1/w1_master_slaves", 
> O_RDONLY) = 1
> [pid 29460] fstat64(1, {st_mode=S_IFREG|0444, st_size=4096, ...}) = 0
> [pid ds1820read29460] mmap2(NULL, 4096, PROT_READ|PROT_WRITE, 
> MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6fbe000
> [pid 29460] read(1, "10-000802558178\n28-000003c3d020\n"..., 4096) = 160

ds1820read()
> [pid 29460] open("/sys/bus/w1/devices/10-000802558178/w1_slave", 
> O_RDONLY) = 2
> [pid 29460] fstat64(2, {st_mode=S_IFREG|0444, st_size=4096, ...}) = 0
> [pid 29460] mmap2(NULL, 4096, PROT_READ|PROT_WRITE, 
> MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6fbd000
> [pid 29460] read(2,  <unfinished ...>

das ist nur ein ueberbleibsel des hauptprozesses aus deamonize()
> [pid 29459] write(1, "Child process created: 29460\n", 29) = 29
> [pid 29459] exit_group(0)               = ?

> <... read resumed> "2f 00 4b 46 ff ff 04 10 35 : crc"..., 4096) = 75
> read(2, "", 4096)                       = 0
> close(2)                                = 0
> munmap(0xb6fbd000, 4096)                = 0
das muesste das close() am ende von ds1820read() gewesen sein...

und jetzt sind wir dann wohl in http_post()
> --- SIGSEGV (Segmentation fault) @ 0 (0) ---
wo vermutlich einer der parameter von sprintf(), zeile 270, ungueltig ist...
ich wuerde raten, dass vzuuid durch einen bug im config-parser ungueltig ist,
deine config hast du aber leider nicht mitgeschickt.


More information about the volkszaehler-dev mailing list