Syscall param socketcall.send(msg) points to uninitialised b

Schnelle objektorientierte, kompilierende Programmiersprache.
Antworten
Glocke
Beiträge: 332
Registriert: Fr Okt 26, 2012 8:39 am

Syscall param socketcall.send(msg) points to uninitialised b

Beitrag von Glocke » Mi Mär 13, 2013 12:09 am

Hi,

ich arbeite derzeit an meinem Event-Based Networking-Framework https://github.com/cgloeckner/networking und habe die example1.cpp mal mit valgrind genauer untersucht. Dabei ist mir folgendes aufgefallen:

Code: Alles auswählen

==13560== Thread 4:
==13560== Syscall param socketcall.send(msg) points to uninitialised byte(s)
==13560==    at 0x042e9808: send (socket.S:100)
==13560==    by 0x040ee166: SDLNet_TCP_Send (in /usr/lib/i386-linux-gnu/libSDL_net-1.2.so.0.0.7)
==13560==    by 0x0804b25c: TcpLink::send_ptr(void*, unsigned int) (connection.hpp:131)
==13560==    by 0x0804acf0: trigger_sender(void*) (eventsystem.cpp:24)
==13560==    Address 0x4c723f9 is 257 bytes inside a block of size 258 alloc'd
==13560==    at 0x0402b9b4: operator
==13560==    by 0x0804d3a8: tcp_demo() (example1.cpp:71)
==13560==    by 0x0804d69c: main (example1.cpp:181)
==13560==    Uninitialised value was created by a heap allocation
==13560==    at 0x0402b9b4: operator
==13560==    by 0x0804d3a8: tcp_demo() (example1.cpp:71)
==13560==    by 0x0804d69c: main (example1.cpp:181)
==13560==
Allerdings komme ich an der Stelle gerade nicht weiter: liegt der Fehler an mir oder im SDL_net-Code?
Damit der zugehörige Code später (wenn ein Meteorit alle GitHub-Server gekillt hat ^^) noch im Forum zu finden ist, hänge ich ein abgespecktes ZIP-Archiv (wo nur das notwendige Zeug drinnen ist) mal hier an.
networking_example1.zip
Kompilieren lässt es sich mit:

Code: Alles auswählen

g++ -o demo src/*.cpp example1.cpp -lSDL -lSDL_net --std=c++0x -g
Liebe Grüße
Glocke
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.

Antworten