Magnus Gille 9bb90e3737 Fix crash safety issues: Unsafe signal connections and tree child access (#4761)
Systematically resolved 30 identified potential crash vectors and established automated regression testing to prevent strict reoccurrence.

Key Changes:
- Fixed 11 instances of unsafe `QObject::connect` calls (missing context object) in srd/Charts/AgendaWindow.cpp, FixSpikes.cpp, src/FileIO/FixSpikes.cpp, src/Gui/Agenda.cpp, src/Gui/BatchProcessingDialog.cpp, and src/Gui/IconManager.cpp. This prevents crashes caused by signals firing after the receiver has been destroyed.
- Fixed 19 instances of unsafe `QTreeWidgetItem` child access in src/Charts/LTMChartParser.cpp, src/Gui/ColorButton.cpp, src/Gui/AthletePages.cpp, and src/Gui/Pages.cpp by adding defensive `nullptr` checks before dereferencing.
- Added Python detection scripts util/check_unsafe_connects.py and util/check_unsafe_tree_child.py to statically analyze the codebase for these specific unsafe patterns.
- Integrated detection scripts into the regression test suite under `unittests/Core/signalSafety`, verifying the fixes and enforcing a strict zero-tolerance policy for future regressions.
- Added `testSplineCrash` to cover edge cases with empty spline lookups.
2025-12-17 13:52:38 -03:00
2025-12-13 12:20:49 -03:00
2024-03-25 20:46:26 -03:00
2019-03-12 19:16:22 +00:00
2025-12-13 12:20:49 -03:00
2024-03-25 20:46:26 -03:00
2025-12-13 12:20:49 -03:00

GoldenCheetah

About

GoldenCheetah is a desktop application for cyclists and triathletes and coaches

  • Analyse using summary metrics like BikeStress, TRIMP or RPE
  • Extract insight via models like Critical Power and W'bal
  • Track and predict performance using models like Banister and PMC
  • Optimise aerodynamics using Virtual Elevation
  • Train indoors with ANT and BTLE trainers
  • Upload and Download with many cloud services including Strava, Withings and Todays Plan
  • Import and export data to and from a wide range of bike computers and file formats
  • Track body measures, equipment use and setup your own metadata to track

GoldenCheetah provides tools for users to develop their own own metrics, models and charts

  • A high-performance and powerful built-in scripting language
  • Local Python runtime or embedding a user installed runtime
  • Embedded user installed R runtime

GoldenCheetah supports community sharing via the Cloud

  • Upload and download user developed metrics
  • Upload and download user, Python or R charts
  • Import indoor workouts from the ErgDB
  • Share anonymised data with researchers via the OpenData initiative

GoldenCheetah is free for everyone to use and modify, released under the GPL v2 open source license with pre-built binaries for Mac, Windows and Linux.

Installing

Golden Cheetah install and build instructions are documented for each platform;

INSTALL-WIN32 For building on Microsoft Windows

INSTALL-LINUX For building on Linux

INSTALL-MAC For building on Apple MacOS

Windows/macOS/Linux on AppVeyor: Build status

Official release builds, snapshots and development builds are all available from http://www.goldencheetah.org

NOTIO Fork

If you are looking for the NOTIO fork of GoldenCheetah it can be found here: https://github.com/notio-technologies/GCNotio

Feedback

If you have questions or would like to give feedback, we have a Users Forum: https://groups.google.com/g/golden-cheetah-users

Languages
Standard ML 68.3%
C++ 28.1%
C 2.7%
Yacc 0.2%
QMake 0.2%
Other 0.1%