Segfault when threads == 1 (Optix Prime 4.0.2)

Summary:
After setting the thread count to one, the call to rtpQueryExecute segfaults.

How to duplicate:
This can be duplicated by editing two lines in the primeSimple application that ships with the SDK.

  1. Immediately before executing the query (L185), set the thread count to one:
    std::cout << "Setting threads to 1" << std::endl;
    CHK_PRIME( rtpContextSetCpuThreads( context, 1 ) );
    
  2. Recompile, then run the application:
    ./primeSimple -c cpu -b host
    
  3. The application segfaults. Running under Valgrind yields the following:
    Invalid read of size 8
       at 0x71EE5AC: ??? (in /usr/local/NVIDIA-OptiX-SDK-4.0.2/lib64/liboptix_prime.so.4.0.2)
       by 0x71ED4DC: ??? (in /usr/local/NVIDIA-OptiX-SDK-4.0.2/lib64/liboptix_prime.so.4.0.2)
       by 0x71D01ED: ??? (in /usr/local/NVIDIA-OptiX-SDK-4.0.2/lib64/liboptix_prime.so.4.0.2)
       by 0x71E2987: ??? (in /usr/local/NVIDIA-OptiX-SDK-4.0.2/lib64/liboptix_prime.so.4.0.2)
       by 0x71E2142: ??? (in /usr/local/NVIDIA-OptiX-SDK-4.0.2/lib64/liboptix_prime.so.4.0.2)
       by 0x71C24E4: ??? (in /usr/local/NVIDIA-OptiX-SDK-4.0.2/lib64/liboptix_prime.so.4.0.2)
       by 0x71C81F9: rtpQueryExecute (in /usr/local/NVIDIA-OptiX-SDK-4.0.2/lib64/liboptix_prime.so.4.0.2)
       by 0x40988E: main (primeSimple.cpp:191)
     Address 0x8 is not stackd, mallocd or (recently) freed
    
    
    Process terminating with default action of signal 11 (SIGSEGV)
     Access not within mapped region at address 0x8
       at 0x71EE5AC: ??? (in /usr/local/NVIDIA-OptiX-SDK-4.0.2/lib64/liboptix_prime.so.4.0.2)
       by 0x71ED4DC: ??? (in /usr/local/NVIDIA-OptiX-SDK-4.0.2/lib64/liboptix_prime.so.4.0.2)
       by 0x71D01ED: ??? (in /usr/local/NVIDIA-OptiX-SDK-4.0.2/lib64/liboptix_prime.so.4.0.2)
       by 0x71E2987: ??? (in /usr/local/NVIDIA-OptiX-SDK-4.0.2/lib64/liboptix_prime.so.4.0.2)
       by 0x71E2142: ??? (in /usr/local/NVIDIA-OptiX-SDK-4.0.2/lib64/liboptix_prime.so.4.0.2)
       by 0x71C24E4: ??? (in /usr/local/NVIDIA-OptiX-SDK-4.0.2/lib64/liboptix_prime.so.4.0.2)
       by 0x71C81F9: rtpQueryExecute (in /usr/local/NVIDIA-OptiX-SDK-4.0.2/lib64/liboptix_prime.so.4.0.2)
       by 0x40988E: main (primeSimple.cpp:191)
    

Environment

  • Operating System = RHEL 7.3
  • Compiler = GNU 4.8.5
  • CPU = Intel Xeon E5-2683v4
  • OptiX Version = 4.0.2
  • Question:
    Is this a bug, or have I musunderstood the proper usage of rtpContextSetCpuThreads?