1
0
Fork 0
Commit graph

108 commits

Author SHA1 Message Date
James Turner
083d364f9c NavCache: don’t crash if rebuild is abandoned
Add a flag, so we can cleanly exit/join the rebuild thread, if we
are asked to delete the NavCache during a rebuild.
2021-06-18 12:38:50 +01:00
James Turner
4b744820ea Fix macOS crash-on-exit with certain font
Sentry-Id: FLIGHTGEAR-M68
2021-03-14 14:47:18 +00:00
James Turner
b61d189071 Add more bootstrap logging for Win7 weirdness 2020-12-07 17:11:17 +00:00
Julian Smith
a6a7ce3e4b src/Main/bootstrap.cxx: avoid warning on openbsd. 2020-11-01 00:03:03 +00:00
Julian Smith
34e749bc15 src/Main/bootstrap.cxx: disable custom segfault handler on OpenBSD. 2020-11-01 00:03:03 +00:00
Automatic Release Builder
c564c667df Sentry: avoid duplicate events for exceptions
Since fatalMessageBox already logs an event when it’s invoked, don’t
report the event a second time.
2020-10-29 14:44:40 +00:00
James Turner
dfcae619cf Crude startup logging.
To diagnose startup hang, will revert once we have fix the issue.
2020-10-29 13:44:59 +00:00
Automatic Release Builder
d9b7435dab Sentry logging of exceptions, fatal errors 2020-08-26 09:52:02 +01:00
James Turner
cf424e4344 Rename buildId header file
Avoid the very common name ‘build.h’ in favour of something clearer
and FlightGear specific.
2020-08-24 15:05:16 +01:00
James Turner
178d1beb80 Cmake: Remove version.h machinery
Merge this file into config.h, this means we can save an include path
everywhere.
2020-08-24 15:04:24 +01:00
Automatic Release Builder
439c5bf4f4 Adjust how we enable/disable Sentry.io
This allows for crash-reporting in the launcher,
but still disabling via default.xml or the command line.
2020-08-18 16:51:21 +01:00
James Turner
54264e6591 Add —disable-gui option
Prevents showing a GUI message box if the user wants to run from the
console.

As requested here:
   https://sourceforge.net/p/flightgear/codetickets/2306/
2020-07-14 12:05:53 +01:00
James Turner
ee6f4388ee Change how fatalMessageBoxThenExit works
This avoids crashing when using Qt : we cannot call exit() safely since
QGuiApplication won’t shut down correctly. Instead throw a special
marker object and catch this in boostrap.

For an instance of this, see:

https://sourceforge.net/p/flightgear/codetickets/2070/
2020-06-24 15:48:02 +01:00
James Turner
faee5dbabf Code changes for crash reporting with Sentry. 2020-04-17 17:55:34 +01:00
James Turner
a405d0508b Fix a dumb allocation bug on Windows 2020-03-09 16:28:22 +00:00
Julian Smith
f3d1135320 Various fixes for building on OpenBSD. 2019-09-04 10:55:43 +01:00
Scott Giese
1ede51f3f6 Improved OSG Version detection. 2019-08-26 17:45:16 -05:00
James Turner
bac5d6c713 Windows: read Unicode command line
One more step in full Unicode support.
2019-04-27 18:54:13 +01:00
James Turner
d534a5ba36 Move build-ID variables to their own header
This is to reduce rebuilding by changing version.h needlessly, since
only a few places use the build ID info.
2018-08-12 11:18:50 -07:00
James Turner
af6611d7f6 Initial attempt at —-uninstall mode for FGFS
This is a headless mode, designed to be invoked from an installer, not
used directly by users. It doesn’t touch the ‘normal’ installation, but
rather removes the other files FG typically creates or downloads.
2017-06-15 18:30:37 +01:00
James Turner
0c59583b32 Fix intermittent crash on exit with Qt+XCB
We can still crash on exit(-1) code paths since we can’t run this from
atexit, but at least the non-error paths are ok.
2017-06-07 17:52:47 +01:00
Florent Rougon
fd78d32e56 End segfault_handler() with std::abort() rather than kill() on ourselves
This has the advantage, according to my testing on Linux, that core
files obtained after a crash now point to the crashing thread again,
when one starts 'gdb' on the core file and runs the 'bt' command.

Apparently, when using kill(), the signal is seen as coming from the
outside and gdb's 'bt' command points to the wrong thread in general
when debugging using a core file (when debugging "live", gdb intercepts
the signal even before FG's signal handler is started).

See discussion starting at
<https://sourceforge.net/p/flightgear/mailman/message/35833221/>.
2017-05-11 12:19:31 +02:00
James Turner
2dbe88936e Don't warn about missing CrashRpt when developing 2017-04-29 20:58:05 +01:00
Florent Rougon
cf318f1cc5 Better setting of the process exit status for fgfs and fgviewer
Some pieces of code such as fgMainInit() and, by cascading effect,
fgInitHome(), were careful to return a meaningful value indicating
success or error, however the main() function in src/Main/bootstrap.cxx
ignored it royally so far.

main() now returns:
  - EXIT_FAILURE if fgMainInit() or fgviewerMain() throws an exception;
  - whatever said function returns otherwise.
2017-04-10 02:29:48 +02:00
Florent Rougon
4b494a69bd Rename fatalMessageBox() to fatalMessageBoxWithoutExit(), add exiting variant
- Rename fatalMessageBox() to fatalMessageBoxWithoutExit(). This should
  prevent the kind of bug that prompted this set of changes: someone
  calling fatalMessageBox(), assuming the program would stop at that
  point, whereas in reality it did not.

- Add new function fatalMessageBoxThenExit(). This is not vital of
  course, but allows one to spare one line here and there and to apply
  the DRY principle for such fatal exits.

- Replace every existing call to fatalMessageBox() with one or the other
  of the two new functions. Improve formatting along the way. This
  fixes a few bugs of the kind explained above.
2017-04-10 02:29:48 +02:00
Florent Rougon
5040e6c7f0 Don't call fatalMessageBox() from fg_terminate(), make it end with std::abort()
Basically, this is because fatalMessageBox() is only safe to call from
the GUI thread, however it seems fg_terminate() can be called from any
thread (according to C++11 semantics). Additionally, fatalMessageBox()
typically requires some work to happen in the GUI thread (event loop) in
order to display something, but we can't realistically expect this while
running a terminate handler just before the program dies.

See messages around
<https://sourceforge.net/p/flightgear/mailman/message/35775803/> for a
discussion of this subject.

+ Minor header cleanup (<locale.h> replaced with <clocale>, etc.)
2017-04-08 14:03:48 +02:00
James Turner
3653508412 Build- and run-time concept of developer mode.
Make a single Cmake value to expose the build type to code, and use
this to default a run-time ‘developer-mode’ property, which can be
over-ridden from the command line.

Use this to drive the different warning levels. Policies subject to
review, especially whether nightly builds should default to 
developer mode or not.
2017-02-27 23:37:59 +00:00
Erik Hofman
706ce325d3 Do not forget to signal the proper signal number first 2017-02-27 11:50:51 +01:00
Erik Hofman
6179a8d8d7 Still generate a core file 2017-02-27 11:46:25 +01:00
Erik Hofman
e39eac8a6d Nicer, human readanle, stack trace output 2017-01-30 15:58:09 +01:00
Erik Hofman
57dc778565 Fix a last minute typo 2017-01-30 12:31:05 +01:00
Erik Hofman
182f758eb7 Add a segmentation-fault report for Linux and Apple 2017-01-30 12:29:51 +01:00
Rebecca N. Palmer
2b1336cd39 clear GroundLightManager also on non-standard exits to avoid crash
(e.g. --show-aircraft,
https://sourceforge.net/p/flightgear/codetickets/1935/ )
2017-01-28 23:07:23 +00:00
Erik Hofman
596ba557f1 Detect the absence of SSE2 hardware as soon as possible and bail out if it is not found but FligthGear is compiled with SSE2 support 2017-01-06 16:30:51 +01:00
James Turner
e672626558 Explicitly shut down logging
- needed to call FreeConsole on Windows.
2016-06-09 11:04:32 +01:00
James Turner
c72309360e Defensive handling of locales.
- Use setlocale() to ensure consistent handling of locales and
  string handling irrespective of whether or not QCoreApplication
  is invoked. Forces a the C locale for numerics and collation,
  since many pieces of FG assume this.
2016-02-02 20:44:46 +00:00
Rebecca N. Palmer
d56fbfd415 Revert "Initialise Qt earlier, and whenever available"
Temporary workaround for
http://sourceforge.net/p/flightgear/codetickets/1819/

This reverts commit 3e67417bf0.
2015-11-30 23:10:32 +00:00
Rebecca N. Palmer
3e67417bf0 Initialise Qt earlier, and whenever available
(to allow it to be used for error boxes)
2015-11-24 07:21:52 +00:00
James Turner
bf6ef6664c Fix for OSG 3.5 2015-11-13 22:13:44 +00:00
James Turner
aa20e0acd8 Work on new download-dir option
- simplify management of a single, user-facing
  location for large downloaded data.
2015-04-10 15:01:54 +01:00
James Turner
39d1b6db38 Re-factor the FPE handling code
* make --enable-fpe work on Linux and MSVC
* standardise the code paths for different platforms
* add an argument finding helper to Options

(This is a basic cleanup, contributions from people with
more experience in this area are welcome)
2014-02-19 13:53:52 -08:00
James Turner
45d67406a4 CrashRpt tweaks, checking.
- show a message box if setup fails
- log setup status
2014-01-22 22:33:30 +00:00
James Turner
a46114da9a Fix typo, add Hudson Build-ID to reports. 2014-01-20 21:54:06 +00:00
James Turner
590be3f8ff Initial integration of CrashRpt for Windows. 2014-01-18 14:51:19 +00:00
James Turner
448539a6b9 Fix crash: Quit via Cmd-Q on Mac.
Tweak static-init order of some OSG objects, so they are valid when
fg_terminate runs, and hence orderly shutdown in possible.
2014-01-04 17:27:55 +00:00
James Turner
4c51ad0d87 Cocoa: fix warning about deprecated function.
SetFrontProcess is deprecated, use NSApplication instead now we
have the CocoaHelpers file.
2013-12-21 15:31:27 +00:00
James Turner
136cd6ac51 Message box support.
This allows us to display a platform-native dialog for problems
which occur early in startup (before we can show a PUI/Canvas dialog).

In particular this improves feedback where FG_HOME, FG_DATA or
aircraft selection is wrong, all of which happen very early in startup.
2013-11-14 22:02:29 +00:00
James Turner
d127f7709f Remove confusing reference to SDL/GLUT 2013-10-26 21:12:57 +01:00
James Turner
3cdf948c8b SGI and Borland compilers are gone. 2013-10-26 21:11:02 +01:00
James Turner
78f2f2f142 Work-around for issue 1231.
Force sglog() to be initialised before at exit
handler is registered, so logging can be used from
inside our exit handler.
2013-10-15 22:02:36 +01:00