Gst_bus_add_signal_watch confusion

I have a pipeline that overlays GPS data on a video display triggered by a SIGUSR1 every 30s

All runs in a main loop. My handler is NOT signal safe, so I

gst_bus_add_signal_watch (mainBus);
g_unix_signal_add (SIGUSR1, (GSourceFunc) workHandler, mainPipe);

every 5 or so ticks the displayProgram is killed without leaving any messages or trace. core shows it was in the interrupt handler and died from SEGV.

I (unsafely) use signal (SIGUSR1, workHandler);

Next day my displayProgram is happly ticking along

My only change is to comment in and out the lines shown.

Can anyone offer insight?
Thanks
James