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
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