Skip to content
New issue

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

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

Already on GitHub? # to your account

Adding Satisfactory Modding Crash Reporter #142

Open
wants to merge 1 commit into
base: dev
Choose a base branch
from

Conversation

Panakotta00
Copy link
Member

Adds a custom crash reporter for the modding community.

Consists of three simple parts:

  • The crash reporter program written in rust that reads configs files etc and send the crash log to the specified endpoints
  • The crash reporting patch that launches the crash reporter when a crash got detected
  • The crash reporting endpoint prompt for the main menu

Mods can now specify a CrashReportingEndpoint inside their .uplugin file.
This endpoint has to be a URL.
When entering the main menu, SML looks at all loaded mods and their endpoints. These will then be compared with a accepted and rejected list of endpoints which is stored in the SML configuration.
Unknown endpoints will then get displayed in a prompt in the main menu with a notice for the player what the prompt is and why it exists. The user can then individually decide which Endpoints he wants to accept, or he can reject or accept all of them. Alternatively he can "alway reject" which will disable the modding crash reporter.
When the prompt get closed and the store action is excuted. The SML config will be now written with the new accepted and rejected list.
The SML configuration also has a option to fully disable the modding crash reporter.
When the crash reporter is disabled, or no endpoint changes are found, then the crash report endpoint prompt wont be shown.

When the crash reporter is not disabled, and a crash occurs, the reporter will be launched.

The reporter will then try to read the SML config and the uplugin files of the mods to figure out about which endpoints we care and are accepted. He then tries to send the log file to these endpoints.
Discord URL will be recognized and a payload will be used, that can be used for a discord webhook, for other URLs a plain text http request containing the report will be sent to the endpoint.

The current crash recognition is based on the OnShutdownAfterError core delegate.
This is a easy point to hook for error recognition after the crash report it-self got printed to the log.
The OnSystemError core delegate would have gotten executed too early.
The OnShutdownAfterError core delegate gets executed by GError->HandleError(). This in turn should be executed within the system wide error handler aka. using structured exception handling by the PC.

@mircearoata mircearoata changed the base branch from auto-header-update to dev October 12, 2022 18:08
@budak7273
Copy link
Member

Currently blocked

  • Team not sure if crashes should go to each mod dev's individual endpoints (users approve each endpoint, only that dev can see crashes), or be gathered in ficsit.app (one approval from users, who can see can be controlled from there)
  • Introduces a separate rust application to the codebase

@furrepanther
Copy link

furrepanther commented Sep 15, 2024

Recommend "gathered in ficsit.app" for the following reason(s)

  • SIngle point of management
  • Developers/development POC changes will be noticed by SOMEONE when no responses/no updates/no fixes take place due to missing developer or lack of developer interest (code going stale). This will make it possible to easily determine when something should be pulled from ficsit.app due to a lack of support or, possibly, reassigned to a volunteer.
  • If devs update their email addresses in ficsit.app, then they only have the one place to update it (for this purpose), making it more likely active devs' contact info gets updated and not missed due to a dev forgetting that they needed to updated it elsewhere
  • I hope all this made sense, if not, just delete it.
  • If you're looking for another volunteer, let's find out how I can add value to your processes (if I can).

@budak7273
Copy link
Member

# for free to join this conversation on GitHub. Already have an account? # to comment
Labels
None yet
Projects
Status: Blocked
Development

Successfully merging this pull request may close these issues.

3 participants