Skip to content

Sentry Windows integration TODO list

Marc Durdin edited this page Apr 19, 2020 · 6 revisions

TODO for Sentry Windows integration. [MD]

make build
sentry-cli upload-dif -p keyman-windows -t breakpad -t pdb -t sourcebundle --include-sources desktop engine
sentry-cli upload-dif -p keyman-developer -t breakpad -t pdb -t sourcebundle --include-sources developer

Not creating this as issues for now. This is a dump spot for a bunch of bits and pieces.

  1. Test on Win7 a) Test if we can go to using VC redist DLL instead of static link to improve size b) Test basic functionality

  2. Add environment (Stable | Beta | Alpha | Test | Local)

  3. Do x64 processes need crashpad_handler.x64?

  4. Add .dpr line mapping (itext segment)

  5. Delete all existing DIFs and reports for Windows/Developer once finished. [and on sentry.io too]

  6. Adjust Android's release tagging to match Windows'

  7. Add crash test and event test functions to every significant process: https://drive.google.com/open?id=19xfurbn4cGubSCD68EGuKhcR5HrjaUcY

LATER

  1. Investigate broken exception reporting in Native API at https://forum.sentry.io/t/corrupted-display-when-exception-data-is-set-using-native-sdk/9167/2. Reported bug at: https://github.com/getsentry/sentry-native/issues/235 against 0.2.3

  2. Look at cleaning up old symbols. How we do this - by debugId? (or by date?) ref https://forum.sentry.io/t/wish-add-tags-to-debug-information-files/9191/2

  3. Diagnostic reports?

  4. Minidumps for Delphi?

  5. Crashpad for Delphi?

  6. c++ source view does not seem to be working correctly. Need to chase on forum.sentry.io

  7. Backups

  8. Manual send report in tsysinfo

DONE 8. Update Delphi sentry wrapper to 2.0 decl SKIP 9. Use crashpad handler for Delphi code too [not doing this for now - we lose too much context] DONE 10. Use release builds of Sentry Native API DONE 11. Remove additional storage from Azure DONE 3. crashpad_handler seems to be console subsystem by default? https://github.com/getsentry/crashpad/pull/4 DONE 17. Custom build of sentry.dll / sentry.x64.dll (don't forget, set these properties for all targets): DONE a) Configuration / General: Windows SDK Version=8.1 DONE b) Configuration / C/C++ / Preprocessor / Preprocessor Definitions: _WIN32_WINNT=0x0601 DONE c) Configuration / Linker / Input / Additional Dependencies: shlwapi.lib DONE d) Configuration / C/C++ / Code Generation / Runtime Library: Multi-Threaded not DLL! DONE e) Sentry.x64.dll: Configuration / General / Target Name: sentry.x64

DONE 1. Add absolute paths to .sym files, using .dpr and searchpath to find files; don't forget to expand filenames so no .. are included DONE 2. Add release building DONE 4. Only upload symbols that we really want; e.g. don't upload bldutils/, support/, kcframe, DONE 1. Include sources for source preview DONE 2. Figure out GitHub linking of commits SKIP? 3. Use tds parser instead of map parser, so we can extract library symbols too -- then we can eliminate more of JEDI DONE 2. Improve the TSysInfo crash dialog DONE 2. C++ apps DONE * kmanalyze DONE * kmdecomp DONE * mcompile DONE 2. Web host crash reports - except for kmshell file: refactoring DONE 1. Think about reporting failure when a crash occurs (Keyman.System.KeymanSentryClient:85) DONE 3. Library crashes: DONE * keyman32.dll DONE * kmcmpdll.dll DONE * kmcomapi.dll DONE 9. It seems 'releases must be unique across all projects in the organisation.' https://docs.sentry.io/development/sdk-dev/event-payloads/ Are we broken on this? --> It seems fine. we have a single release that covers multiple projects. DONE 4. 64-bit crashes: DONE * keymanx64.exe DONE * keyman64.dll DONE * tsysinfo.x64.exe DONE * kmcomp.x64.exe DONE * kmcmpdll.x64.dll DONE * kmcomapi.x64.dll DONE * Include sentry.x64.dll in installers DONE 10. Allow user to turn off automatic reporting and control privacy level DONE 1. Call stacks need to be dropped after a second or two so that the latest stack is shown (otherwise handled exceptions may override the unhandled exception case). DONE 2. UUIDs are now ordered wrong-endianly when presented to user: e.g. 4FF48B41FB54E24B38CD816A6ED8DFE1 vs https://sentry.keyman.com/organizations/keyman/issues/215/events/418bf44f54fb4be238cd816a6ed8dfe1/ DONE 5. Add crashpad_handler to installers DONE 18. sentry_modulefinder_windows does not cater for changes in dynamically loaded modules (https://github.com/getsentry/sentry-native/pull/216) (#213) DONE 8. sentry.dll still has dependencies on win10 functions -- may need additional flag set?

hub pull-request -op -M P10S3 -l windows,developer,enhancement


Look at fstrim:

https://docs.microsoft.com/en-us/azure/virtual-machines/linux/add-disk

On Mon, 30 Mar 2020 at 17:29, Marc Durdin marc_durdin@sil.org wrote: TRIM/UNMAP support for Linux in Azure Some Linux kernels support TRIM/UNMAP operations to discard unused blocks on the disk. This feature is primarily useful in standard storage to inform Azure that deleted pages are no longer valid and can be discarded, and can save money if you create large files and then delete them.

There are two ways to enable TRIM support in your Linux VM. As usual, consult your distribution for the recommended approach:

Use the discard mount option in /etc/fstab, for example:

bash

Copy UUID=33333333-3b3b-3c3c-3d3d-3e3e3e3e3e3e /datadrive ext4 defaults,discard 1 2 In some cases, the discard option may have performance implications. Alternatively, you can run the fstrim command manually from the command line, or add it to your crontab to run regularly:

Ubuntu

bash

Copy sudo apt-get install util-linux sudo fstrim /datadrive RHEL/CentOS

bash

Copy sudo yum install util-linux sudo fstrim /datadrive

Clone this wiki locally