- client: Add SEH handlers around the Nvidia and ATI detection

routines.  Take care of situations where something within
        the vendors functions cause a crash.
        
    client/
        coproc_detect.cpp

svn path=/trunk/boinc/; revision=20744
This commit is contained in:
Rom Walton 2010-02-26 18:03:39 +00:00
parent 263720bd0e
commit 04b6570f96
2 changed files with 28 additions and 0 deletions

View File

@ -1403,3 +1403,13 @@ Charlie 26 Feb 2010
clientgui/
DlgEventLog.cpp, .h
MainDocument.cpp
Rom 26 Feb 2010
- client: Add SEH handlers around the Nvidia and ATI detection
routines. Take care of situations where something within
the vendors functions cause a crash.
client/
coproc_detect.cpp

View File

@ -61,8 +61,26 @@ void COPROCS::get(
) {
#ifdef _WIN32
#ifdef _MSC_VER
__try {
COPROC_CUDA::get(*this, use_all, descs, warnings, ignore_cuda_dev);
}
__finally {
warnings.push_back("Caught SIGSEGV in NVIDIA GPU detection");
}
__try {
COPROC_ATI::get(*this, descs, warnings, ignore_ati_dev);
}
__finally {
warnings.push_back("Caught SIGSEGV in ATI GPU detection");
}
#else
COPROC_CUDA::get(*this, use_all, descs, warnings, ignore_cuda_dev);
COPROC_ATI::get(*this, descs, warnings, ignore_ati_dev);
#endif
#else
void (*old_sig)(int) = signal(SIGSEGV, segv_handler);
if (setjmp(resume)) {