PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Syscall param rt_sigaction(act->sa_mask) points to uninitialised byte(s)



7.e.Q
12-10-2006, 14:07
Hi Leute,

ich nutze nun mal wieder valgrind, um ein paar "Fehler" in meinem Programm auszumerzen. Jetzt hab ich da einen, den ich nicht ganz verstehe. Valgrind gibt mir folgende Ausgabe:



==28382== Syscall param rt_sigaction(act->sa_mask) points to uninitialised byte(s)
==28382== at 0x41A324E: __libc_sigaction (in /lib/libc.so.6)
==28382== by 0x41A33EB: sigaction (in /lib/libc.so.6)
==28382== by 0x8098A74: InitializeSignals() (main.cxx:174)
==28382== by 0x8098AE6: main (main.cxx:233)
==28382== Address 0xBE8ECABC is on thread 1's stack
==28382==
==28382== Syscall param rt_sigaction(act->sa_mask) points to uninitialised byte(s)
==28382== at 0x41A324E: __libc_sigaction (in /lib/libc.so.6)
==28382== by 0x41A33EB: sigaction (in /lib/libc.so.6)
==28382== by 0x8098A8A: InitializeSignals() (main.cxx:175)
==28382== by 0x8098AE6: main (main.cxx:233)
==28382== Address 0xBE8ECABC is on thread 1's stack
==28382==
==28382== Syscall param rt_sigaction(act->sa_mask) points to uninitialised byte(s)
==28382== at 0x41A324E: __libc_sigaction (in /lib/libc.so.6)
==28382== by 0x41A33EB: sigaction (in /lib/libc.so.6)
==28382== by 0x8098AA0: InitializeSignals() (main.cxx:176)
==28382== by 0x8098AE6: main (main.cxx:233)
==28382== Address 0xBE8ECABC is on thread 1's stack
==28382==
==28382== Syscall param rt_sigaction(act->sa_mask) points to uninitialised byte(s)
==28382== at 0x41A324E: __libc_sigaction (in /lib/libc.so.6)
==28382== by 0x41A33EB: sigaction (in /lib/libc.so.6)
==28382== by 0x8098AB6: InitializeSignals() (main.cxx:177)
==28382== by 0x8098AE6: main (main.cxx:233)
==28382== Address 0xBE8ECABC is on thread 1's stack
==28382==
==28382== Syscall param rt_sigaction(act->sa_mask) points to uninitialised byte(s)
==28382== at 0x41A324E: __libc_sigaction (in /lib/libc.so.6)
==28382== by 0x41A33EB: sigaction (in /lib/libc.so.6)
==28382== by 0x8098ACC: InitializeSignals() (main.cxx:178)
==28382== by 0x8098AE6: main (main.cxx:233)
==28382== Address 0xBE8ECABC is on thread 1's stack



Der entsprechende Codeblock sieht so aus:


void InitializeSignals()
{
signal(SIGPIPE, SIG_IGN);

struct sigaction hndl_act;
hndl_act.sa_handler = NULL;
hndl_act.sa_sigaction = SignalHandler;
hndl_act.sa_flags = SA_NOCLDSTOP | SA_SIGINFO;
hndl_act.sa_restorer = NULL;

sigaction(SIGCHLD, &hndl_act, NULL); // Zeile 174
sigaction(SIGALRM, &hndl_act, NULL); // Zeile 175
sigaction(SIGTERM, &hndl_act, NULL); // Zeile 176
sigaction(SIGINT, &hndl_act, NULL); // Zeile 177
sigaction(SIGSEGV, &hndl_act, NULL); // Zeile 178
}


Kann mir jemand sagen, was da falsch ist?

Danke

Grüße,
Hendrik

anda_skoa
12-10-2006, 14:18
Es gibt in dieser Struct offensichtlich noch ein Feld sa_mask, welches nicht gesetzt ist

Ciao,
_