Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Client phase 1: viewer watchdog child process #3426

Open
nat-goodspeed opened this issue Jan 17, 2025 · 4 comments
Open

Client phase 1: viewer watchdog child process #3426

nat-goodspeed opened this issue Jan 17, 2025 · 4 comments
Labels
enhancement New feature or request triage Flags issues that need to be triaged

Comments

@nat-goodspeed
Copy link
Contributor

nat-goodspeed commented Jan 17, 2025

On startup, make the viewer run a child process, passing it a stdin pipe. The child process initiates a read of its stdin, and simply waits.

Before intentional termination, the viewer writes a reassuring packet to the child's stdin. The viewer terminates; the pipe closes; the child sees EOF on the pipe. Having received assurance, the child terminates without further action.

If the viewer terminates unintentionally, the child sees EOF on the stdin pipe without the reassuring packet. The child reads state files written by the viewer and sends a crash report to the new crash-report endpoint. The crash report includes the session ID. On confirmation of receipt, it deletes the state files so the next viewer session won't send them redundantly.

Test Plan

  1. Run the viewer. Terminate it normally. No crash report is sent. Verify that watchdog process terminates normally.
  2. Run the viewer. Force a crash. Observe that a crash report is sent. Verify that watchdog process terminates normally.
  3. Verify that the crash report contains the session ID.
@nat-goodspeed nat-goodspeed added enhancement New feature or request triage Flags issues that need to be triaged labels Jan 17, 2025
@nat-goodspeed
Copy link
Contributor Author

LLLeap might be a good mechanism for this. It gives us a ready way to post to the child process. And child process stderr is already logged in the viewer log, which is useful if the child process itself crashes.

@nat-goodspeed
Copy link
Contributor Author

nat-goodspeed commented Jan 21, 2025

Proposed payload:

  • viewer version
  • viewer channel
  • the machine ID we send to the VVM
  • session ID if available
  • session duration
  • SecondLife.log?

Actually, we could do a whole lot worse than to send static_debug_info.log.

@nat-goodspeed
Copy link
Contributor Author

Per crash report meeting 2025-01-30 at 14:00 SLT:

  • timestamp
  • static_debug_info.log
  • crash UUID - store in marker files - store in BugSplat packet

@nat-goodspeed
Copy link
Contributor Author

static_debug_info.log

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request triage Flags issues that need to be triaged
Projects
None yet
Development

Successfully merging a pull request may close this issue.

1 participant