From 1a313b88f830fd808a6ee269460e8306d92cf4c2 Mon Sep 17 00:00:00 2001 From: Fedor Indutny <79877362+indutny-signal@users.noreply.github.com> Date: Wed, 19 Jan 2022 17:50:16 -0800 Subject: [PATCH] Fix crash report location on Windows --- app/crashReports.ts | 12 ++++++++++-- app/main.ts | 9 +++++++-- preload.js | 3 +++ 3 files changed, 20 insertions(+), 4 deletions(-) diff --git a/app/crashReports.ts b/app/crashReports.ts index ebd489852..91934c1a0 100644 --- a/app/crashReports.ts +++ b/app/crashReports.ts @@ -10,10 +10,18 @@ import * as Errors from '../ts/types/errors'; import { isProduction } from '../ts/util/version'; import { upload as uploadDebugLog } from '../ts/logging/uploadDebugLog'; import { SignalService as Proto } from '../ts/protobuf'; +import * as OS from '../ts/OS'; async function getPendingDumps(): Promise> { const crashDumpsPath = await realpath(app.getPath('crashDumps')); - const pendingDir = join(crashDumpsPath, 'pending'); + let pendingDir: string; + if (OS.isWindows()) { + pendingDir = join(crashDumpsPath, 'reports'); + } else { + // macOS and Linux + pendingDir = join(crashDumpsPath, 'pending'); + } + const files = await readdir(pendingDir); return files.map(file => join(pendingDir, file)); @@ -38,7 +46,7 @@ async function eraseDumps( ); } -export function setup(getLogger: () => LoggerType): void { +export async function setup(getLogger: () => LoggerType): Promise { const isEnabled = !isProduction(app.getVersion()); if (isEnabled) { diff --git a/app/main.ts b/app/main.ts index 9b6982ac4..c639e7b34 100644 --- a/app/main.ts +++ b/app/main.ts @@ -325,6 +325,7 @@ function prepareUrl( userDataPath: app.getPath('userData'), downloadsPath: app.getPath('downloads'), homePath: app.getPath('home'), + crashDumpsPath: app.getPath('crashDumps'), ...moreKeys, }).href; } @@ -1401,11 +1402,14 @@ function getAppLocale(): string { // Some APIs can only be used after this event occurs. let ready = false; app.on('ready', async () => { - const userDataPath = await realpath(app.getPath('userData')); + const [userDataPath, crashDumpsPath] = await Promise.all([ + realpath(app.getPath('userData')), + realpath(app.getPath('crashDumps')), + ]); logger = await logging.initialize(getMainWindow); - setupCrashReports(getLogger); + await setupCrashReports(getLogger); if (!locale) { const appLocale = getAppLocale(); @@ -1451,6 +1455,7 @@ app.on('ready', async () => { const installPath = await realpath(app.getAppPath()); addSensitivePath(userDataPath); + addSensitivePath(crashDumpsPath); if (getEnvironment() !== Environment.Test) { installFileHandler({ diff --git a/preload.js b/preload.js index 160f7c647..69f42db7a 100644 --- a/preload.js +++ b/preload.js @@ -436,6 +436,9 @@ try { const { addSensitivePath } = require('./ts/util/privacy'); addSensitivePath(window.baseAttachmentsPath); + if (config.crashDumpsPath) { + addSensitivePath(config.crashDumpsPath); + } window.Signal = Signal.setup({ Attachments,