nus-comparch / looppoint

Sampled simulation of multi-threaded applications using LoopPoint methodology
https://looppoint.github.io
12 stars 7 forks source link

Pin error: PRIVILEGED_INS during BBV generation #5

Closed brajskular closed 1 year ago

brajskular commented 1 year ago

I have been profiling a program which uses the C++ threads library. The program spawns threads which perform matrix multiplication, which is protected by a mutex. Parent threads spawn children which perform the multiplication. Synchronization is achieved through the use of join().

PFA the code for the program and the cfg file for the looppoint run. The command to compile code is: g++ -std=c++11 -pthread contention.cpp -o contention.out

The looppoint command is: run-looppoint.py -c contention.1.cfg -n 8 --force

The fat pinball seems to be generated successfully, but the pin tool in the SDE kit crashes during the BBV generation phase. The error is: In: Thread: 8 PID: 3185 SYSTEM TID: 3195 Exception code: PRIVILEGED_INS Exception Class: 3 Exception address: 0x7fc34a122c5a C: [tid:3195] Tool (or Pin) caused signal 11 at PC 0x7fc34a122c5a Segmentation fault (core dumped)

Thank you for looppoint, its a super useful tool!

contention.tar.gz

alenks commented 1 year ago

@brajskular, Can you also provide the compiler flags you use to compile the sources?

brajskular commented 1 year ago

@alenks There are two compiler flags : -std=c++11 and -pthread

alenks commented 1 year ago

@brajskular The application spawns more than eight threads. Provide the right number of threads with -n option and it works, although in this example, the application is very small, and it eventually fails (at SimPoint) as there is only one region after profiling.

brajskular commented 1 year ago

@alenks Ahh this works, thank you! I see this is the total number of threads in the program, and since I plan on running applications that create and destroy threads, it also means -n changes with the dataset size.