zero-init signals array
properly NULL-init some vars to avoid logic flaws later
va_start should be paired with va_end
don't leak memory