When a program aborts abnormally the exit code (as seen by the shell) typically has the high bit set so the value is 128 or higher. So a simple solution might be
dodgy_command
while [ $? -ge 128 ]
do
process_data
dodgy_command
done
If you specifically only want a segfault and not any other type of error, the while line becomes `$? -eq 139` (because SEGV is signal 11; 128+11=139).
If you don't get an high valued exit code on failure then it probably means the application is trapping the error, itself, and forcing a different exit code.