in src/chromeDebugAdapter.ts [628:674]
async function findNewlyLaunchedChromeProcess(semaphoreFile: string): Promise<string> {
const regexPattern = /processid\s+=\s+(\d+)\s*;/i;
let lastAccessFileContent: string;
for (let i = 0 ; i < 25; i++) {
if (fs.existsSync(semaphoreFile)) {
lastAccessFileContent = fs.readFileSync(semaphoreFile, {
encoding: 'utf16le'
}).toString();
const lines = lastAccessFileContent.split('\n');
const matchedLines = (lines || []).filter(line => line.match(regexPattern));
if (matchedLines.length > 1) {
throw new Error(`Unexpected semaphore file format ${lines}`);
}
if (matchedLines.length === 1) {
const match = matchedLines[0].match(regexPattern);
return match[1];
}
// else == 0, wait for 200 ms delay and try again.
}
await new Promise<void>((resolve) => {
setTimeout(resolve, 200);
});
}
const error = new Error(`Cannot acquire Chrome process id`);
let telemetryProperties: any = {
semaphoreFileContent: lastAccessFileContent
};
coreUtils.fillErrorDetails(telemetryProperties, error);
/* __GDPR__
"error" : {
"semaphoreFileContent" : { "classification": "SystemMetaData", "purpose": "FeatureInsight" },
"${include}": [
"${IExecutionResultTelemetryProperties}",
"${DebugCommonProperties}"
]
}
*/
telemetry.telemetry.reportEvent('error', telemetryProperties);
return null;
}