intel / intel/pti-gpu

Issue with XPTI subscriber detection for subprocess inheritance

Open
#96 3 comments 0 reactions 0 assignees View on GitHub
Dominant language
C++
Stars
273
Forks
70
PR merge metrics
No merged PRs in 30d

Description

The last release introduced an issue with subprocess XPTI subscriber detection:

**Process 1 (Parent Process):**
1. Python test initializes and loads PTI library
2. PTI queries `XPTI_SUBSCRIBERS` environment variable: Result = **Not Set**
3. PTI registers as XPTI subscriber by setting: `XPTI_SUBSCRIBERS=/path/to/libpti.so`

**Process 2 (Child Process via subprocess):**
1. Child process inherits env from parent process including: `XPTI_SUBSCRIBERS=/path/to/libpti.so` (inherited)
2. Child process loads PTI library
3. PTI queries `XPTI_SUBSCRIBERS` environment variable: Result = **Already Set**
4. PTI incorrectly interprets parent's PTI subscription as foreign subscriber
5. PTI outputs warning: `"Another subscriber already subscribed to Sycl runtime events..."`

Root Cause

The current implementation only checks if `XPTI_SUBSCRIBERS` is non-empty, without difference between PTI itself and real foreign subscribers.

Current Implementation
```cpp
inline std::pair IsSubscriberToXPTI() {
auto current_xpti_subscriber = utils::GetEnv("XPTI_SUBSCRIBERS");
// and may be it is unitrace
return {!current_xpti_subscriber.empty(),
current_xpti_subscriber.find("unitrace") != std::string::npos};
}
```
Proposed Fix
```cpp
inline std::pair IsSubscriberToXPTI() {
auto current_xpti_subscriber = utils::GetEnv("XPTI_SUBSCRIBERS");
bool is_unitrace = current_xpti_subscriber.find("unitrace") != std::string::npos;

if (current_xpti_subscriber.empty()) {
return {false, is_unitrace};
}

// Check if the subscriber is PTI itself (not foreign for linux + win)
if (current_xpti_subscriber.find("libpti") != std::string::npos ||
current_xpti_subscriber.find("pti.dll") != std::string::npos) {
return {false, is_unitrace};
}

// It's a real foreign subscriber (not PTI)
return {true, is_unitrace};
}
```
Related issue : https://github.com/intel/intel-xpu-backend-for-triton/issues/4998

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.