Issue with XPTI subscriber detection for subprocess inheritance
- 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
Assessment
This issue has not been assessed yet.