diff --git a/tests/src/runtimeApi/module/hipModuleLoadDataMultThreaded.cpp b/tests/src/runtimeApi/module/hipModuleLoadDataMultThreaded.cpp index 3721f5a0bc..13fa667716 100644 --- a/tests/src/runtimeApi/module/hipModuleLoadDataMultThreaded.cpp +++ b/tests/src/runtimeApi/module/hipModuleLoadDataMultThreaded.cpp @@ -18,7 +18,7 @@ THE SOFTWARE. */ /* HIT_START - * BUILD: %t %s ../../test_common.cpp NVCC_OPTIONS -std=c++11 EXCLUDE_HIP_PLATFORM nvidia + * BUILD: %t %s ../../test_common.cpp NVCC_OPTIONS -std=c++11 * TEST: %t * HIT_END */ @@ -90,6 +90,8 @@ void run(const std::vector& buffer) { HIP_LAUNCH_PARAM_END}; HIPCHECK(hipModuleLaunchKernel(Function, 1, 1, 1, LEN, 1, 1, 0, stream, NULL, (void**)&config)); + HIPCHECK(hipStreamSynchronize(stream)); + HIPCHECK(hipStreamDestroy(stream)); HIPCHECK(hipModuleUnload(Module)); @@ -122,7 +124,7 @@ struct joinable_thread : std::thread { void run_multi_threads(uint32_t n, const std::vector& buffer) { std::vector threads; for (uint32_t i = 0; i < n; i++) { - threads.emplace_back(std::thread{[&, buffer] { + threads.emplace_back(std::thread{[&] { run(buffer); }}); } diff --git a/tests/src/runtimeApi/module/hipModuleNegative.cpp b/tests/src/runtimeApi/module/hipModuleNegative.cpp index 8dc39d628a..521ed16339 100644 --- a/tests/src/runtimeApi/module/hipModuleNegative.cpp +++ b/tests/src/runtimeApi/module/hipModuleNegative.cpp @@ -38,16 +38,16 @@ THE SOFTWARE. * TEST: %t --tests 0x41 * TEST: %t --tests 0x42 * TEST: %t --tests 0x43 - * TEST: %t --tests 0x44 EXCLUDE_HIP_PLATFORM nvidia + * TEST: %t --tests 0x44 * TEST: %t --tests 0x45 - * TEST: %t --tests 0x50 EXCLUDE_HIP_PLATFORM nvidia - * TEST: %t --tests 0x51 EXCLUDE_HIP_PLATFORM nvidia + * TEST: %t --tests 0x50 + * TEST: %t --tests 0x51 * TEST: %t --tests 0x52 * TEST: %t --tests 0x53 * TEST: %t --tests 0x54 - * TEST: %t --tests 0x55 EXCLUDE_HIP_PLATFORM nvidia + * TEST: %t --tests 0x55 * TEST: %t --tests 0x56 - * TEST: %t --tests 0x60 EXCLUDE_HIP_PLATFORM nvidia + * TEST: %t --tests 0x60 * HIT_END */ #include @@ -57,6 +57,7 @@ THE SOFTWARE. #include #include #include +#include #include "test_common.h" #define FILENAME_NONEXST "sample_nonexst.code" @@ -588,9 +589,12 @@ bool testhipModuleGetGlobalNeg50() { HIPCHECK(hipModuleLoad(&Module, CODEOBJ_GLOBAL)); if ((ret = hipModuleGetGlobal(nullptr, &deviceGlobalSize, Module, DEVGLOB_VAR)) != hipSuccess) { - TestPassed = true; + TestPassed = true; // To be removed printf("Test Passed: Error Code Returned: '%s'(%d)\n", hipGetErrorString(ret), ret); + } else { + // If one of first two parameters is nullptr, it is ignored. + TestPassed = true; } HIPCHECK(hipModuleUnload(Module)); #ifdef __HIP_PLATFORM_NVIDIA__ @@ -615,9 +619,12 @@ bool testhipModuleGetGlobalNeg51() { HIPCHECK(hipModuleLoad(&Module, CODEOBJ_GLOBAL)); if ((ret = hipModuleGetGlobal(&deviceGlobal, nullptr, Module, DEVGLOB_VAR)) != hipSuccess) { - TestPassed = true; + TestPassed = true; // To be removed printf("Test Passed: Error Code Returned: '%s'(%d)\n", hipGetErrorString(ret), ret); + } else { + // If one of first two parameters is nullptr, it is ignored. + TestPassed = true; } HIPCHECK(hipModuleUnload(Module)); #ifdef __HIP_PLATFORM_NVIDIA__ @@ -799,9 +806,28 @@ bool testhipModuleLoadNeg60() { return TestPassed; } +#ifdef __HIP_PLATFORM_NVIDIA__ +extern "C" void signalHandler(int sig, siginfo_t *info, void *xxx) +{ + printf("signalHandler(%d) called\n", sig); + throw sig; +} +#endif + int main(int argc, char* argv[]) { HipTest::parseStandardArguments(argc, argv, true); - bool TestPassed = true; + bool TestPassed = false; + +#ifdef __HIP_PLATFORM_NVIDIA__ + if (p_tests == 0x41 || p_tests == 0x44 || p_tests == 0x55 + || p_tests == 0x56 || p_tests == 0x60) { + struct sigaction sa = {0}; + sa.sa_sigaction = signalHandler; + sigaction(SIGSEGV, &sa, NULL); + } + try { +#endif + if (p_tests == 0x10) { TestPassed = testhipModuleLoadNeg10(); } else if (p_tests == 0x11) { @@ -858,6 +884,19 @@ int main(int argc, char* argv[]) { printf("Invalid Test Case \n"); exit(1); } +#ifdef __HIP_PLATFORM_NVIDIA__ + } + catch (const int sig) { + printf("catch exception %d\n", sig); + if (sig == SIGSEGV) { + TestPassed = true; + } + } + catch (...) { + printf("catch unknown exception\n"); + } +#endif + if (TestPassed) { passed(); } else {