diff options
author | Albert Cheng <acheng@hdfgroup.org> | 2010-04-28 17:11:11 (GMT) |
---|---|---|
committer | Albert Cheng <acheng@hdfgroup.org> | 2010-04-28 17:11:11 (GMT) |
commit | 1c2f19b16e8cf20651b8893cfff884c9635586bd (patch) | |
tree | 5d7aef0e6d5aa341b5918082379d1a1b132f5e44 /configure | |
parent | 5a26307f8666e50b37327e042f3005463636f73c (diff) | |
download | hdf5-1c2f19b16e8cf20651b8893cfff884c9635586bd.zip hdf5-1c2f19b16e8cf20651b8893cfff884c9635586bd.tar.gz hdf5-1c2f19b16e8cf20651b8893cfff884c9635586bd.tar.bz2 |
[svn-r18658] Bug: 1764
Description:
longjmp do not necessary restore signal that is blocked during the signal
handling. This caused the Alignment test to fail quietly, resulting in wrong
alignment information which will cause failures later.
Solution:
One can use sigsetjmp/siglongjmp to restore signal handling but not all systems
such as Cray XT or VMS supports sigsetjmp. Backup solution is to use
sigprocmask to reset the signal. Again, some systems may not support it either.
Added code to try the first and then the second solution. Also added tests
to verify if the signal_handler routines are working properly. Finally, added
code to print results of the verification (in form of comments) to H5Tinit.c
for inspection in case of failure.
(Note that many platforms do not have alignment limits at all and ALIGNMNET
code never raise the SIGBUS or SIGSEGV errors. In those cases, it does not
matter whether the signal handlers work or not. Again, this can be deduced
from the results comments near the end of the H5Tinit.c. If the sum of signal
handlers called equals the total of verify, it means ALIGNMENT does not raise
any signals.)
Tested: htcommittested (linew is not accessible), jam(serial), Redstorm.
Diffstat (limited to 'configure')
-rwxr-xr-x | configure | 17 |
1 files changed, 15 insertions, 2 deletions
@@ -24831,7 +24831,7 @@ _ACEOF fi done -for ac_func in gethostname getpwuid getrusage longjmp lstat +for ac_func in gethostname getpwuid getrusage lstat do : as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" @@ -24844,7 +24844,20 @@ _ACEOF fi done -for ac_func in rand_r random setsysinfo siglongjmp signal +for ac_func in rand_r random setsysinfo +do : + as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` +ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" +eval as_val=\$$as_ac_var + if test "x$as_val" = x""yes; then : + cat >>confdefs.h <<_ACEOF +#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 +_ACEOF + +fi +done + +for ac_func in signal longjmp setjmp siglongjmp sigsetjmp sigprocmask do : as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" |