@@ -93421,7 +93421,7 @@ const external_node_child_process_namespaceObject = __WEBPACK_EXTERNAL_createReq
9342193421const external_node_path_namespaceObject = __WEBPACK_EXTERNAL_createRequire(import.meta.url)("node:path");
9342293422;// CONCATENATED MODULE: external "node:stream/promises"
9342393423const external_node_stream_promises_namespaceObject = __WEBPACK_EXTERNAL_createRequire(import.meta.url)("node:stream/promises");
93424- ;// CONCATENATED MODULE: ./node_modules/.pnpm/github.com+DeterminateSystems+detsys-ts@e8f6e8f54d85aa0fd3d0b694dd3279a21497a33b_my6t2hapzhbardj4d5wtrx4lzm /node_modules/detsys-ts/dist/index.js
93424+ ;// CONCATENATED MODULE: ./node_modules/.pnpm/github.com+DeterminateSystems+detsys-ts@817e4d4123b6fb4eae5aa557658f25f8539e7240_cyq6j27kjpra3jtdpg5422ffka /node_modules/detsys-ts/dist/index.js
9342593425var __defProp = Object.defineProperty;
9342693426var __export = (target, all) => {
9342793427 for (var name in all)
@@ -93651,16 +93651,16 @@ function stringifyError(e) {
9365193651
9365293652
9365393653
93654- async function collectBacktraces(prefixes) {
93654+ async function collectBacktraces(prefixes, startTimestampMs ) {
9365593655 if (isMacOS) {
93656- return await collectBacktracesMacOS(prefixes);
93656+ return await collectBacktracesMacOS(prefixes, startTimestampMs );
9365793657 }
9365893658 if (isLinux) {
93659- return await collectBacktracesSystemd(prefixes);
93659+ return await collectBacktracesSystemd(prefixes, startTimestampMs );
9366093660 }
9366193661 return /* @__PURE__ */ new Map();
9366293662}
93663- async function collectBacktracesMacOS(prefixes) {
93663+ async function collectBacktracesMacOS(prefixes, startTimestampMs ) {
9366493664 const backtraces = /* @__PURE__ */ new Map();
9366593665 try {
9366693666 const { stdout: logJson } = await exec.getExecOutput(
@@ -93702,16 +93702,20 @@ async function collectBacktracesMacOS(prefixes) {
9370293702 for (const [source, dir] of dirs) {
9370393703 const fileNames = (await (0,promises_namespaceObject.readdir)(dir)).filter((fileName) => {
9370493704 return prefixes.some((prefix) => fileName.startsWith(prefix));
93705+ }).filter((fileName) => {
93706+ return !fileName.endsWith(".diag");
9370593707 });
9370693708 const doGzip = (0,external_node_util_.promisify)(external_node_zlib_namespaceObject.gzip);
9370793709 for (const fileName of fileNames) {
9370893710 try {
93709- const logText = await (0,promises_namespaceObject.readFile)(`${dir}/${fileName}`);
93710- const buf = await doGzip(logText);
93711- backtraces.set(
93712- `backtrace_value_${source}_${fileName}`,
93713- buf.toString("base64")
93714- );
93711+ if ((await (0,promises_namespaceObject.stat)(`${dir}/${fileName}`)).ctimeMs >= startTimestampMs) {
93712+ const logText = await (0,promises_namespaceObject.readFile)(`${dir}/${fileName}`);
93713+ const buf = await doGzip(logText);
93714+ backtraces.set(
93715+ `backtrace_value_${source}_${fileName}`,
93716+ buf.toString("base64")
93717+ );
93718+ }
9371593719 } catch (innerError) {
9371693720 backtraces.set(
9371793721 `backtrace_failure_${source}_${fileName}`,
@@ -93722,13 +93726,14 @@ async function collectBacktracesMacOS(prefixes) {
9372293726 }
9372393727 return backtraces;
9372493728}
93725- async function collectBacktracesSystemd(prefixes) {
93729+ async function collectBacktracesSystemd(prefixes, startTimestampMs) {
93730+ const sinceSeconds = Math.ceil((Date.now() - startTimestampMs) / 1e3);
9372693731 const backtraces = /* @__PURE__ */ new Map();
9372793732 const coredumps = [];
9372893733 try {
9372993734 const { stdout: coredumpjson } = await exec.getExecOutput(
9373093735 "coredumpctl",
93731- ["--json=pretty", "list", "--since", "1 hour ago" ],
93736+ ["--json=pretty", "list", "--since", `${sinceSeconds} seconds ago` ],
9373293737 {
9373393738 silent: true
9373493739 }
@@ -94299,6 +94304,8 @@ var FACT_NIX_STORE_CHECK_ERROR = "nix_store_check_error";
9429994304var STATE_KEY_EXECUTION_PHASE = "detsys_action_execution_phase";
9430094305var STATE_KEY_NIX_NOT_FOUND = "detsys_action_nix_not_found";
9430194306var STATE_NOT_FOUND = "not-found";
94307+ var STATE_KEY_CROSS_PHASE_ID = "detsys_cross_phase_id";
94308+ var STATE_BACKTRACE_START_TIMESTAMP = "detsys_backtrace_start_timestamp";
9430294309var DIAGNOSTIC_ENDPOINT_TIMEOUT_MS = 3e4;
9430394310var CHECK_IN_ENDPOINT_TIMEOUT_MS = 5e3;
9430494311var DetSysAction = class {
@@ -94326,6 +94333,8 @@ var DetSysAction = class {
9432694333 this.features = {};
9432794334 this.featureEventMetadata = {};
9432894335 this.events = [];
94336+ this.getCrossPhaseId();
94337+ this.collectBacktraceSetup();
9432994338 this.facts = {
9433094339 $lib: "idslib",
9433194340 $lib_version: version,
@@ -94415,6 +94424,15 @@ var DetSysAction = class {
9441594424 getUniqueId() {
9441694425 return this.identity.run_differentiator || process.env.RUNNER_TRACKING_ID || (0,external_node_crypto_namespaceObject.randomUUID)();
9441794426 }
94427+ // This ID will be saved in the action's state, to be persisted across phase steps
94428+ getCrossPhaseId() {
94429+ let crossPhaseId = core.getState(STATE_KEY_CROSS_PHASE_ID);
94430+ if (crossPhaseId === "") {
94431+ crossPhaseId = (0,external_node_crypto_namespaceObject.randomUUID)();
94432+ core.saveState(STATE_KEY_CROSS_PHASE_ID, crossPhaseId);
94433+ }
94434+ return crossPhaseId;
94435+ }
9441894436 getCorrelationHashes() {
9441994437 return this.identity;
9442094438 }
@@ -94768,10 +94786,23 @@ var DetSysAction = class {
9476894786 process.chdir(startCwd);
9476994787 }
9477094788 }
94789+ collectBacktraceSetup() {
94790+ if (process.env.DETSYS_BACKTRACE_COLLECTOR === "") {
94791+ core.exportVariable(
94792+ "DETSYS_BACKTRACE_COLLECTOR",
94793+ this.getCrossPhaseId()
94794+ );
94795+ core.saveState(STATE_BACKTRACE_START_TIMESTAMP, Date.now());
94796+ }
94797+ }
9477194798 async collectBacktraces() {
9477294799 try {
94800+ if (process.env.DETSYS_BACKTRACE_COLLECTOR !== this.getCrossPhaseId()) {
94801+ return;
94802+ }
9477394803 const backtraces = await collectBacktraces(
94774- this.actionOptions.binaryNamePrefixes
94804+ this.actionOptions.binaryNamePrefixes,
94805+ parseInt(core.getState(STATE_BACKTRACE_START_TIMESTAMP))
9477594806 );
9477694807 core.debug(`Backtraces identified: ${backtraces.size}`);
9477794808 if (backtraces.size > 0) {
0 commit comments