This is the mail archive of the
gcc-help@gcc.gnu.org
mailing list for the GCC project.
exclusion macros ifdef, else and endif
- From: JoÃl KrÃhemann <jkraehemann at gmail dot com>
- To: gcc-help at gcc dot gnu dot org
- Date: Sat, 19 Dec 2015 23:19:50 +0100
- Subject: exclusion macros ifdef, else and endif
- Authentication-results: sourceware.org; auth=none
- Reply-to: jkraehemann-guest at users dot alioth dot debian dot org
Hi
Since valgrind shows me following I'm asking me if later code is
wrong. As putting the variables just after the if statement the
application runs more reliable.
valgrind --vgdb=yes --vgdb-error=0 --read-var-info=yes ./gsequencer
==11700== Memcheck, a memory error detector
==11700== Copyright (C) 2002-2015, and GNU GPL'd, by Julian Seward et al.
==11700== Using Valgrind-3.11.0 and LibVEX; rerun with -h for copyright info
==11700== Command: ./gsequencer
==11700==
==11700== (action at startup) vgdb me ...
==11700==
==11700== TO DEBUG THIS PROCESS USING GDB: start GDB like this
==11700== /path/to/gdb ./gsequencer
==11700== and then give GDB the following command
==11700== target remote | /usr/lib/valgrind/../../bin/vgdb --pid=11700
==11700== --pid is optional if only one valgrind process is running
==11700==
==11700== Warning: bad signal number 268435456 in sigaction()
** Message: loading preferences for: /home/joelkraehemann/.gsequencer/ags.conf
(gsequencer:11700): GLib-GObject-WARNING **:
/build/glib2.0-ocmJ1Y/glib2.0-2.46.2/./gobject/gsignal.c:2516: signal
'stop' is invalid for instance '0x1338a2e0' of type 'AgsDevout'
==11700== Thread 6:
==11700== Conditional jump or move depends on uninitialised value(s)
==11700== at 0x4C6DE5: ags_thread_loop (ags_thread-posix.c:2198)
==11700== by 0x911A0A3: start_thread (pthread_create.c:309)
==11700== by 0x941506C: clone (clone.S:111)
==11700==
==11700== (action on error) vgdb me ...
==11700== Continuing ...
==11700== Conditional jump or move depends on uninitialised value(s)
==11700== at 0x4C6DF7: ags_thread_loop (ags_thread-posix.c:2204)
==11700== by 0x911A0A3: start_thread (pthread_create.c:309)
==11700== by 0x941506C: clone (clone.S:111)
==11700==
==11700== (action on error) vgdb me ...
==11700== Continuing ...
==11700== Gdb request to kill this process
joelkraehemann@debian:~/gsequencer$ valgrind --vgdb=yes --vgdb-error=0
--read-var-info=yes ./gsequencer
==11932== Memcheck, a memory error detector
==11932== Copyright (C) 2002-2015, and GNU GPL'd, by Julian Seward et al.
==11932== Using Valgrind-3.11.0 and LibVEX; rerun with -h for copyright info
==11932== Command: ./gsequencer
==11932==
==11932== (action at startup) vgdb me ...
==11932==
==11932== TO DEBUG THIS PROCESS USING GDB: start GDB like this
==11932== /path/to/gdb ./gsequencer
==11932== and then give GDB the following command
==11932== target remote | /usr/lib/valgrind/../../bin/vgdb --pid=11932
==11932== --pid is optional if only one valgrind process is running
==11932==
/* idle */
if(g_atomic_pointer_get(&(thread->parent)) == NULL){
#ifdef AGS_USE_TIMER
pthread_mutex_lock(thread->timer_mutex);
if(!g_atomic_int_get(&(thread->timer_expired))){
g_atomic_int_set(&(thread->timer_wait),
TRUE);
while(!g_atomic_int_get(&(thread->timer_expired))){
pthread_cond_wait(thread->timer_cond,
thread->timer_mutex);
}
}
g_atomic_int_set(&(thread->timer_wait),
FALSE);
g_atomic_int_set(&(thread->timer_expired),
FALSE);
pthread_mutex_unlock(thread->timer_mutex);
#else
long time_spent;
static const long time_unit = NSEC_PER_SEC / AGS_THREAD_MAX_PRECISION;
clock_gettime(CLOCK_MONOTONIC, &time_now);
if(time_now.tv_sec > time_prev.tv_sec){
time_spent = (time_now.tv_nsec) + (NSEC_PER_SEC - time_prev.tv_nsec);
}else{
time_spent = time_now.tv_nsec - time_prev.tv_nsec;
}
if(time_spent < time_unit){
struct timespec timed_sleep = {
0,
0,
};
if(time_spent < time_unit){
timed_sleep.tv_nsec = time_unit - time_spent;
nanosleep(&timed_sleep, NULL);
}
}
clock_gettime(CLOCK_MONOTONIC, &time_prev);
#endif
}
Bests,
JoÃl