* gdb.threads/sigthread.c: Use barriers to ensure that
child_thread and child_thread_two are always initialized before we start to use them.
This commit is contained in:
parent
3f4178d63f
commit
aceaf3add3
|
@ -1,3 +1,9 @@
|
||||||
|
2008-01-29 Jim Blandy <jimb@red-bean.com>
|
||||||
|
|
||||||
|
* gdb.threads/sigthread.c: Use barriers to ensure that
|
||||||
|
child_thread and child_thread_two are always initialized before we
|
||||||
|
start to use them.
|
||||||
|
|
||||||
2008-01-29 Vladimir Prus <vladimir@codesourcery.com>
|
2008-01-29 Vladimir Prus <vladimir@codesourcery.com>
|
||||||
|
|
||||||
* gdb.base/watchpoint-solib.exp: New.
|
* gdb.base/watchpoint-solib.exp: New.
|
||||||
|
|
|
@ -20,6 +20,8 @@
|
||||||
testing. */
|
testing. */
|
||||||
#define NSIGS 10000000
|
#define NSIGS 10000000
|
||||||
|
|
||||||
|
pthread_barrier_t barrier;
|
||||||
|
|
||||||
void
|
void
|
||||||
handler (int sig)
|
handler (int sig)
|
||||||
{
|
{
|
||||||
|
@ -34,6 +36,8 @@ child_two (void *arg)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
|
pthread_barrier_wait (&barrier);
|
||||||
|
|
||||||
for (i = 0; i < NSIGS; i++)
|
for (i = 0; i < NSIGS; i++)
|
||||||
pthread_kill (child_thread, SIGUSR1);
|
pthread_kill (child_thread, SIGUSR1);
|
||||||
}
|
}
|
||||||
|
@ -43,6 +47,8 @@ thread_function (void *arg)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
|
pthread_barrier_wait (&barrier);
|
||||||
|
|
||||||
for (i = 0; i < NSIGS; i++)
|
for (i = 0; i < NSIGS; i++)
|
||||||
pthread_kill (child_thread_two, SIGUSR2);
|
pthread_kill (child_thread_two, SIGUSR2);
|
||||||
}
|
}
|
||||||
|
@ -54,10 +60,14 @@ int main()
|
||||||
signal (SIGUSR1, handler);
|
signal (SIGUSR1, handler);
|
||||||
signal (SIGUSR2, handler);
|
signal (SIGUSR2, handler);
|
||||||
|
|
||||||
|
pthread_barrier_init (&barrier, NULL, 3);
|
||||||
|
|
||||||
main_thread = pthread_self ();
|
main_thread = pthread_self ();
|
||||||
pthread_create (&child_thread, NULL, thread_function, NULL);
|
pthread_create (&child_thread, NULL, thread_function, NULL);
|
||||||
pthread_create (&child_thread_two, NULL, child_two, NULL);
|
pthread_create (&child_thread_two, NULL, child_two, NULL);
|
||||||
|
|
||||||
|
pthread_barrier_wait (&barrier);
|
||||||
|
|
||||||
for (i = 0; i < NSIGS; i++)
|
for (i = 0; i < NSIGS; i++)
|
||||||
pthread_kill (child_thread_two, SIGUSR1);
|
pthread_kill (child_thread_two, SIGUSR1);
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue