Closed Bug 1825847 Opened 1 year ago Closed 6 months ago

deb: Crash reporter does not restart Nightly. Consider using XREExeF for CrashReporter::SetRestartArgs.

Categories

(Toolkit :: Crash Reporting, defect)

x86_64
Linux
defect

Tracking

()

RESOLVED WORKSFORME

People

(Reporter: jan, Unassigned)

References

(Blocks 1 open bug)

Details

(Keywords: nightly-community)

Gnome Wayland, Debian Testing, Intel

STR

  1. Downloaded https://firefoxci.taskcluster-artifacts.net/e4iBQ2HfQXK-noZm-UG22Q/0/public/build/target.deb
    (from https://treeherder.mozilla.org/jobs?repo=mozilla-central&selectedTaskRun=e4iBQ2HfQXK-noZm-UG22Q.0&searchStr=Linux%2Cx64%2CShippable%2Copt%2Crepackage-deb-linux64-shippable%2Fopt%2CRpk-deb)
  2. Tried to install:
darkspirit@darkspirit-laptop:~/Downloads$ sudo dpkg -i target.deb
Vormals nicht ausgewähltes Paket firefox-nightly wird gewählt.
(Lese Datenbank ... 313176 Dateien und Verzeichnisse sind derzeit installiert.)
Vorbereitung zum Entpacken von target.deb ...
Entpacken von firefox-nightly (113.0a1~20230331095100) ...
dpkg: Abhängigkeitsprobleme verhindern Konfiguration von firefox-nightly:
 firefox-nightly hängt ab von libgdk-pixbuf2.0-0 (>= 2.22.0); aber:
  Paket libgdk-pixbuf2.0-0 ist nicht installiert.
  1. Fixed dependencies: $ sudo apt-get -f install

Holen:1 https://mirror.eu.oneandone.net/debian testing/main amd64 libgdk-pixbuf-xlib-2.0-0 amd64 2.40.2-2 [47,9 kB]
Holen:2 https://mirror.eu.oneandone.net/debian testing/main amd64 libgdk-pixbuf2.0-0 amd64 2.40.2-2 [14,1 kB]

  1. Opened testcase: $ firefox-nightly https://bug1683946.bmoattachments.org/attachment.cgi?id=9288209
  2. Crash reporter opened. Clicked on "Restart Nightly". (Report has been bp-a61391fc-1735-4783-b3f7-343200230331)
  3. Nightly did not restart.

Tested on KDE Wayland, Debian Testing:
Updated STR with a debian package that has a proper .desktop file (bug 1824327):

  1. Downloaded https://firefox-ci-tc.services.mozilla.com/api/queue/v1/task/U1-4EPJWSxqSwkC6LbzPng/runs/0/artifacts/public/build/target.deb
    (from here)
  2. Installed $ sudo dpkg -i target.deb
  3. Ran: $ firefox-nightly-try https://bug1683946.bmoattachments.org/attachment.cgi?id=9288209

    ExceptionHandler::GenerateDump cloned child 26853
    ExceptionHandler::SendContinueSignalToChild sent continue signal to child
    ExceptionHandler::WaitForContinueSignal waiting for continue signal...
    Exiting due to channel error.
    Exiting due to channel error.
    darkspirit@darkspirit-laptop:~$ Failed to open curl lib from binary, use libcurl.so instead

  4. Clicked on "Restart Nightly".
  5. Nightly did not restart. (Report has been bp-8f850670-5555-4a6b-ae3d-000130230503.)
Component: General → Crash Reporting
Product: Release Engineering → Toolkit
QA Contact: jlorenzo

(I'm just a user.)
Debian Testing's firefox-esr package is affected by the same problem if started from command line:
$ sudo apt install firefox-esr
$ firefox-esr https://bug1683946.bmoattachments.org/attachment.cgi?id=9288209
Clicked on "Restart" and Firefox did not restart.

The problem does not occur if firefox-esr is started via main menu because the .desktop file contains the full path:
$ cat /usr/share/applications/firefox-esr.desktop | grep Exec

Exec=/usr/lib/firefox-esr/firefox-esr %u

Other apps' desktop files just contain Exec=konqueror etc.


$ firefox-nightly-try about:support

DISPLAY :0
MOZ_ASSUME_USER_NS 1
MOZ_CRASHREPORTER_EVENTS_DIRECTORY /home/darkspirit/.mozilla/firefox/evjne9ws.default-nightly-try/crashes/events
MOZ_CRASHREPORTER_RESTART_ARG_0 firefox-nightly-try
MOZ_CRASHREPORTER_RESTART_ARG_1 about:support
MOZ_CRASHREPORTER_RESTART_ARG_2
MOZ_CRASHREPORTER_DATA_DIRECTORY /home/darkspirit/.mozilla/firefox/Crash Reports
MOZ_CRASHREPORTER_PING_DIRECTORY /home/darkspirit/.mozilla/firefox/Pending Pings
MOZ_CRASHREPORTER_STRINGS_OVERRIDE /usr/lib/firefox-nightly-try/browser/crashreporter-override.ini
MOZ_LAUNCHED_CHILD
MOZ_APP_SILENT_START
XRE_PROFILE_PATH
XRE_PROFILE_LOCAL_PATH
XRE_START_OFFLINE
XRE_BINARY_PATH
XRE_RESTARTED_BY_PROFILE_MANAGER

I assume the problem is that CrashReporter::SetRestartArgs(gArgc, gArgv); does not contain the full path and the crash reporter uses execv which ignores the PATH variable.
With execvp it would work.

#include <unistd.h>
#include <stdio.h>
int main(int argc, char *argv[]) {
    char* arr[] = {"firefox-nightly-try", "https://www.google.com",  NULL};
    // printf("%d", execv(arr[0], arr)); // <-- doesn't start: -1
    printf("%d", execvp(arr[0], arr)); // <-- starts
    return 0;
}

From my naive understanding, either

  • execvp should be used instead
    or
  • it should be checked if gArgv for CrashReporter::SetRestartArgs(gArgc, gArgv); begins with "/" and if it does not, then the full path should be placed there (either /usr/bin/firefox-nightly-try or /usr/lib/firefox-nightly-try/firefox).
    MOZ_CRASHREPORTER_STRINGS_OVERRIDE knows its path (/usr/lib/firefox-nightly-try/browser/crashreporter-override.ini):
    GetAppDir() seems to be /usr/lib/firefox-nightly-try/browser/. GetGREDir() is used elsewhere.

(In reply to Darkspirit from comment #2)

(I'm just a user.)
Debian Testing's firefox-esr package is affected by the same problem if started from command line:
$ sudo apt install firefox-esr
$ firefox-esr https://bug1683946.bmoattachments.org/attachment.cgi?id=9288209
Clicked on "Restart" and Firefox did not restart.

The problem does not occur if firefox-esr is started via main menu because the .desktop file contains the full path:
$ cat /usr/share/applications/firefox-esr.desktop | grep Exec

Exec=/usr/lib/firefox-esr/firefox-esr %u

Other apps' desktop files just contain Exec=konqueror etc.

about:support knows the correct path which should be used for restarting Firefox from the crash reporter.

Application Binary /usr/lib/firefox-nightly/firefox-bin

Depends on: 1555366
Summary: deb: Crash reporter does not restart Nightly → deb: Crash reporter does not restart Nightly. Consider using XREExeF for CrashReporter::SetRestartArgs.
No longer depends on: 1555366
Severity: -- → S3
Priority: -- → P3
Priority: P3 → --

"about:crashparent > Restart Nightly" works now.

Status: NEW → RESOLVED
Closed: 6 months ago
Resolution: --- → WORKSFORME
You need to log in before you can comment on or make changes to this bug.