zero-init signals array
va_start should be paired with va_end
avoid dereferencing NULL pointer