James Turner
67806a59b0
Fix a dumb crash I introduced.
2021-08-04 09:08:16 +01:00
James Turner
d8874c26b6
Control over reporting from SimGear
...
To avoid exposign Sentry to Simgear, add some abstract reporting controls
which can be toggled easily without any extra dependencies.
2021-07-31 18:31:10 +01:00
James Turner
d01e9ca2e6
Use owning refs in some places
...
Avoid explicit deletes of ref-counted SGMaterialCache
2021-07-29 17:51:35 +01:00
James Turner
fb436be8f1
MaterialLib: make it thread-safe
2021-07-29 17:51:03 +01:00
James Turner
9e3e4a1ab5
TileDetails: set group names for debugging
2021-07-29 17:50:33 +01:00
James Turner
d6e452ea08
Fix a ref-count loop in Paticles manager
2021-07-29 17:50:33 +01:00
James Turner
1d59135652
Report errors on TileDetails callback failures
...
This callback can do out of memory and other failures, so catch
those and report them.
2021-07-27 16:05:03 +01:00
James Turner
2478bee97f
Don't report PropsIO exceptions
2021-07-27 14:23:09 +01:00
James Turner
877c3a68e6
Optimise sidereal_course performance
...
Avoid calling into sgTimeGMT (which calls into the C library)
every single update.
2021-07-21 22:54:11 +01:00
James Turner
5f334d3839
ModelRegistry: Special case empty file names
...
Related to ticket:
https://sourceforge.net/p/flightgear/codetickets/2609/
2021-07-21 22:53:12 +01:00
James Turner
999e499ce5
Nasal Hash: add isNil wrapper
2021-07-12 09:29:52 +01:00
James Turner
7db6651970
Fix Cyclone-DDS test linkage
2021-07-12 09:29:10 +01:00
James Turner
b50d8e38e6
Error reporting for animations / conditions
...
Don’t report errors for each condition parse failure, but do
aggregate them at the animation level in ReaderWriterXML
Sentry-Id: FLIGHTGEAR-DD
2021-06-26 16:27:22 +01:00
James Turner
069483e6d0
Add try/catch wrappers in SGSubsystemGroup
...
Attempt to narrow down the source of some fatal exceptions we see
on Senty, which occur during init/startup. All these blocks re-throw
so user behaviour is unchanged, but we’ll log the name of the subsytem.
2021-06-23 13:26:40 +01:00
James Turner
a49619fa6c
TerraSync: add another ‘is downloading’ helper
2021-06-18 09:34:30 +01:00
James Turner
59307e9ba2
Emesary: allo main loop recipient shutdown
2021-06-17 15:53:16 +01:00
James Turner
c279557d32
Attempt to fix realpath() recursion
...
Sentry-Id: FLIGHTGEAR-D6W
2021-06-14 13:52:22 +01:00
James Turner
84eda17958
Make out-of-memory in computeHash fatal
2021-06-14 12:10:47 +01:00
James Turner
9ec9d8e423
TerraSync: set scenery path suffixes explicitly
2021-06-11 10:00:54 +01:00
James Turner
f74ba148ab
Precomputed random numbers API
...
Use precomputed tables to give stable random numbers : replaces previous
recompuation when we exhaust the RNG pool.
By Marc Eberhard
2021-05-25 12:53:36 +01:00
James Turner
26995ba13b
Raise minimum OSG version to 3.6
2021-05-24 16:47:56 +01:00
James Turner
bd6a18bb96
CMake: set OpenGL VND policy to NEW to see if it works
...
OLD is causing shouty warnings from CMake, let’s see what happens if
we try for NEW.
2021-05-24 12:40:32 +01:00
James Turner
8d0d1f9047
Props changes: fix a link error with Clang
2021-05-24 12:40:32 +01:00
James Turner
51bf76846c
Thread-safe error reporting in lowlevel.cxx
...
Use an exception rather than polling a flag, for checking errors
during BTG reading. This should allow us to give a correctly
identified error, at exactly the point the read fails.
2021-05-03 16:22:24 +01:00
James Turner
5e30d83a43
Error-reporting: improve reports for STGs and effects
...
When an effect defines no shader sources, special case this error to
avoid confusing result from SGProgram.
Add error-context for readNode STG loading, so failures inside an
STG can be attributed
2021-04-30 13:47:34 +01:00
James Turner
fa40a6d1b8
Error reports: default to SG_LOG(SG_ALERT
...
When no callback is registered, just fall back to a plain SG_ALERT
2021-04-23 12:46:48 +01:00
James Turner
ede4484b8d
Particles: guard against duplicate init
2021-04-23 12:46:20 +01:00
James Turner
2871a2df85
Effects: better error reporting
2021-04-21 21:55:04 +01:00
James Turner
d521625307
Asan: fix leaks in Catalog code
2021-04-21 21:54:45 +01:00
James Turner
1304624f30
ASan: fix a leak in GZ extraction
2021-04-21 21:53:56 +01:00
James Turner
83b58b68ae
HTTP tests: fix an ASan warning.
2021-04-21 12:45:56 +01:00
James Turner
f9f5977cca
NasalEmeserayInterface to an explicit pointer.
...
Also move to its own file, and give it a real header so it can be
directly initialised. (Requires corresponding FlightGear commit)
2021-04-21 12:45:42 +01:00
James Turner
89271e85a0
Shaders: report all shader file paths
...
When reporting a shader log error, include all the shader file
paths and the effect path in the detailed error information.
2021-04-05 12:06:55 +01:00
James Turner
5f026c840c
TerraSync: better reporting of permissions failures removing files
...
Log a ‘failed to remove orphan’ error as an error with the repository,
instead of failing the entire sync
2021-04-02 16:46:47 +01:00
James Turner
ae920c6ebd
TerraSync: add a warning file to the root dir.
...
Try to discourage users from adding custom content underneath the
Terrasync dir, since it can be over-written.
2021-04-02 16:45:50 +01:00
James Turner
0343ef7246
Fix windows build, missing <algorithm>
2021-04-02 16:45:03 +01:00
James Turner
0a7e6b9b84
Subsystems: add checks to avoid crash on early exit
...
Don’t crash if the user exits before subsystems are bound / init-ed
2021-03-23 17:06:05 +00:00
James Turner
676a2e3880
Fix for local particle update
...
See issue at:
https://sourceforge.net/p/flightgear/codetickets/2568/
2021-03-22 19:28:14 +00:00
James Turner
4c89e8a9d5
Packages: add ‘provides’ listing support
...
Support a list of provided files on a package, to make it easier to
identify which package to install based on a required file path.
2021-03-21 16:00:33 +00:00
James Turner
4810eaab92
HTTP: permit cancels inside callbacks
2021-03-21 13:26:04 +00:00
James Turner
224b557573
Packages: support a type enum
...
Work towards other package types, conceptually. (Not actually
implemented yet)
2021-03-21 13:26:04 +00:00
James Turner
8e338389dd
MMap: fix a missed change to use pimpl.
2021-03-16 20:33:44 +00:00
James Turner
522aed9b73
MMap : improved error reporting, Win32 compat
...
Use strutils::sterror to print errno; convert to pimpl idiom to
avoid pulling Windows.h into public view.
2021-03-16 15:49:58 +00:00
James Turner
cf2fe76bb8
Log positions in courseDeg/distanceM failures
...
Trying to understand what causes FLIGHTGEAR-71G on Sentry; suspect it
might be passing in uninitalised values.
2021-03-15 15:45:19 +00:00
James Turner
798e690279
ReadWav: error reporting
...
Report errors from readWAV, and improve attribution for the
format error (include the file path). As a result, mark the individual
exceptions as dont-report, since we will report higher up.
2021-03-15 15:45:19 +00:00
James Turner
feaac37705
Make SGTimeZoneCOntainer using a pimpl
...
Keeps zonedetect data private to SimGear
2021-03-12 14:44:26 +00:00
James Turner
4a1809b566
TerraSync: allow an explicit osm2city server
...
Fixes an error case where a manual TerraSync server is specified; we
would attempt to use an empty string as the OSM2City server, with
hilarious consequences.
Sentry-Id: FLIGHTGEAR-NCZ
2021-03-12 12:47:51 +00:00
James Turner
c86b6fe96c
Catalogs: check for local IO failures writing to disk
...
Sentry.io shows some examples where we failed to write valid data
to disk; check for that if possible.
2021-03-07 15:34:57 +00:00
James Turner
71358dca92
Error-reporting: show XML path when 3D load fails
2021-03-07 12:30:36 +00:00
James Turner
087547c6a0
Report out-of-memory in some loading places
...
BTG can throw bad-alloc in the wild; catch this case and report it.
2021-03-07 12:30:36 +00:00
James Turner
b7234be625
TerraSync: report errors during downloading
...
Report various out-of-memory and IO failure conditions; especially,
failure to write downloaded to disk, which was previously not
recorded.
2021-03-07 12:30:36 +00:00
James Turner
40ead1f71a
Add osg::Program wrapper for error-reporting
2021-03-01 11:57:30 +00:00
James Turner
802ce5ad23
ErrorReporting: set context for STG loading
...
Ensure the STG absolute path can be propagated to all files triggered
by STG loading, including the delayed files and proxied files. This
allows us to attribute errors to the correct scenery path.
2021-03-01 09:42:04 +00:00
James Turner
7352e992e6
Allow delayed setup of ErrorContext data
...
Permit no model data to be provided, when loading a model via the
modelLib API (d’oh)
2021-02-25 12:24:43 +00:00
James Turner
cb15502b41
Error reporting: add SGModelData context support
...
Allow us to pass the current error-context from the main thread
into the osgDB loader thread. This is necessary so we can attribute
AIModel (etc) load problems to the correct source.
2021-02-25 09:04:45 +00:00
James Turner
a402eda151
Error-reporting: add some errors for Effect shaders
2021-02-25 09:04:45 +00:00
James Turner
93e2bccb0e
Error reporting for submodels
...
Also add some error codes I forgot for AI and traffic.
2021-02-21 19:16:53 +00:00
James Turner
b8b88995cf
Add failure reporting / context to various places.
...
Not total coverage by far, but working through the list of common
failure points as seen on Sentry
2021-02-20 19:57:29 +00:00
James Turner
041c247c0f
Suppress reports on some common exception throws
2021-02-20 19:57:29 +00:00
James Turner
e3f4c44685
Add sg_location to all exceptions, add report flag
...
Move sg_location member up to the base clase, since it’s potentially
useful in more types.
Allow suppression of the report callback when the exception is thrown
2021-02-20 19:57:29 +00:00
James Turner
7b4dc51f93
Add new error reporting function / callback
2021-02-20 19:57:29 +00:00
James Turner
368cbcb377
Remove stray include of std::filesystem
2021-02-20 19:57:29 +00:00
James Turner
6319254d71
Fix ownership of SGLight::appendLight, using a ref_ptr
...
Fix some other C++11-isms as well.
2021-02-11 11:23:38 +00:00
James Turner
1ad7161465
SGLight: use copyProperties
2021-02-10 14:51:18 +00:00
James Turner
6a78bc2cdb
Fix VPB compilation with OSG 3.4.x
2021-02-10 14:51:02 +00:00
James Turner
9561895335
Text-animation: fix missing encoding specification
...
Ensure we can pass full UTF-8 strings into text animations. Will consider
for back-port after discussion on the devel list.
Ticket-Id: https://sourceforge.net/p/flightgear/codetickets/2512/
2021-02-07 13:02:31 +00:00
James Turner
b6c0f5ba00
Particles: fix handling of world-attached particles
...
Fix the cull callback to continue with normal culling. Also move
where the particle frame is added to the scene graph, to be sure
we don’t modify the scene during OSG traversals.
2021-02-07 11:38:04 +00:00
James Turner
be49f880b8
Fix HTTPClient reset() behaviour
...
Ensure all data members are correctly re-initialzied when doing a reset.
This shoed up as negative ‘bytes downloaded’ counts after a TerraSync
abandon and retry.
2021-02-05 10:37:23 +00:00
James Turner
059285ed6f
Particles: replace use of ParticleSystemUpdater
...
Extend our own particle manager to replace the OSG particle system
updater. This fixes thread-safety and also timing (better match to
simulation dt values). We also use weak pointers (observer_ptr in
OSG terminology) to ensure particle systems are released once their
frame is gone.
2021-02-03 21:47:51 +00:00
James Turner
0b9849d232
CMake: remove .cmake extensions
...
These seem to break include()’s regular path searching, which is odd.
2021-01-10 13:32:59 +00:00
James Turner
fa1f13cbe2
CMake: add upstream FindLibLZMA.cmake
...
Required since older CMake versions of this don't define an imported target
2021-01-10 11:56:22 +00:00
James Turner
d4a7cb1ee2
ArchiveExtractor .Xz compression of tar-balls
...
Allow use of LibZLMA / XZ compressed tarballs, which are significantly
smaller. Extend unit-tests to cover this.
2021-01-09 16:30:50 +00:00
James Turner
14494afd2f
Tolerate blank lines in buildings lists
2021-01-08 19:39:37 +00:00
James Turner
9fbf56004b
HTTPRepository: improving handling of archives
...
Avoid hard-coding the archive extension, and ensure the extracted
archive directory is not orphaned on update. Finally, use the
literal filename in the .dirindex when computing the hash, rather
than adding a .tgz extension.
2021-01-08 19:39:14 +00:00
James Turner
161f76508d
TerraSync: allow separate OSM2City server
...
Lookup OSM2City using a separate service profile, and use this server
for requests for OSM2City suffix dirs.
2021-01-08 19:38:02 +00:00
James Turner
08906ebbb0
Launhcer: fix crashes adding a catalog
...
Traversing a container which is modified causes crashes, take a copy
during traversal for firePackageStatus.
Sentry-Id: FLIGHTGEAR-CJF
Sentry-Id: FLIGHTGEAR-CJ5
2021-01-01 15:34:17 +00:00
James Turner
284667c18f
Fix BTG error reporting
...
Use gzerror, not strerror, for these codes.
2020-12-21 13:26:04 +00:00
James Turner
b660061812
Fix Nasal GC errors on tests/reset
...
Ensure the Context temps are cleared, and when recycling an naCode,
ensure old values are cleared explicily.
Sentry-Id: FLIGHTGEAR-Y
2020-12-13 17:26:27 +00:00
James Turner
deda20d5bd
SGGeod: add static constructor of an invalid Geod
...
Use this to allow explicitly initializing a value which isValid
will return false for.
2020-12-13 17:26:27 +00:00
James Turner
02cf42359d
Reporting of std::bad_alloc in Subsystem::update
...
Trying to trace down our bad-alloc exception, starting with the simplest
place for now.
2020-12-03 21:37:26 +00:00
James Turner
4271b710ef
Add reporting callback option to SimGear
...
Allows us to trigger an error logging callback explicitly, which can
be used to drive Sentry.io on the FlightGear side.
2020-12-03 21:37:26 +00:00
James Turner
191d546b54
TerraSync: stronger fix for handling 0-byte files
...
Change logic so we create an empty file for such cases, i.e exactly
matching the repository. This simplifies logic in downstream code,
compared with not creating a local file.
Add a test-case to cover this
Modify TerraSync to detect a failure of Airports_archive downloading,
and fall back to file-by-file updating.
2020-12-03 16:40:48 +00:00
James Turner
57a4dc53f2
HTTPRepository: don’t crash on empty files
...
Fix some additional crash cases around 0-length files
2020-12-02 21:28:37 +00:00
James Turner
e370477e4e
Unzip: adjust error reporting mechanism
...
Don’t use local exception throw+catch to report failures in extracting
a zip archive, since this generates noise in Sentry.
2020-12-02 12:12:56 +00:00
James Turner
c88b8b201a
State-machines: don’t require name for transitions
...
Allow anonymous transitions, since the name is purely informational
(unlike for states).
Sentry-Id: FLIGHTGEAR-9H
2020-11-30 16:17:59 +00:00
James Turner
de268300fb
TerraSync: fix crashes with null file return
...
Not sure how this is happening, but, check for a null file object
in FileGetRequest::onDone.
2020-11-29 16:22:21 +00:00
James Turner
ca857fcb25
Strutils: add printf format validation
...
Moved from NewGUI code in FG, better it lives here for re-use.
2020-11-10 23:49:25 +00:00
James Turner
7f0a83388d
DNSClient: own requests, and cancel them on timeout
...
Fixes crashes where a request times-out, but then is completed by
UDN sometime afterwards, with a free-d object. Have the DNS::Client own
requests, and be able to retrieve the udns_query to cancel them, in
the timeout case.
Fixes a couple of Sentry reports.
2020-11-04 22:31:43 +00:00
James Turner
99bd9bb4c0
Terrasync: tarball extraction, use larger buffer
...
Use a 1MB buffer, 2kByte is very 1979 :)
2020-10-30 22:50:44 +00:00
James Turner
8d6d671cc1
TerraSync: switch to per-directory hash caching
...
Avoid a central hash cache becoming enormous, now we use the selective
download scheme for the tile dirs.
Hash name is changed to co-exist with older versions.
2020-10-30 22:49:53 +00:00
James Turner
990c53fc9c
Fix Airports/ initial sync
2020-10-30 19:23:00 +00:00
James Turner
0dd046065d
TerraSync: avoid 404s to probe missing tiles
...
Use the top-level dirIndex files to determine if a 1x1 tile dir
exists, instead of proving the server via a 404. This reduces the
number of requests we make considerably, which is … important.
2020-10-30 16:45:45 +00:00
James Turner
1ab1cae199
TerraSync: validate local dirs incrementally
...
Add a process() method to HTTPRepository, and use this to
incrementally validate subdirs after the .dirIndex is received. This
avoids large pauses of the TerraSync thread, when all of Airports/
is validated at once.
2020-10-30 11:51:26 +00:00
James Turner
87558f8dde
TerraSync: use an unordered_map for the hash cache
...
Linear-scan is a bit slow in debug builds, for the large Airports/ tree;
switch to an unordered_map.
Will back-port to the LTS once tested a bit more.
2020-10-29 23:13:10 +00:00
James Turner
e04249ba48
Props: allow flushing the atomic change listener
...
Trying to narrow down causes of the ‘unregister listeners crashes on
shutdown’ reports.
2020-10-29 17:26:38 +00:00
James Turner
f489232cdb
Fix for crash reported by Michael Danilov
...
In case uDNS returns a NULL txt pointer, don’t try to create a
std::string from it, since this will crash,
See: https://sourceforge.net/p/flightgear/codetickets/2398/
2020-10-25 18:59:37 +00:00
James Turner
83500dd413
CMake: use same 3rdParty logic as FlightGear
...
Avoids need to specify the 3rd-party dir, in the standard/fgmeta
layout of source directories, and accept more combinations of path,
when the user specifies a value.
2020-10-20 16:51:20 +01:00
James Turner
670460a079
Set GCC RelwtihDebInfo opt flags
2020-09-29 17:40:25 +01:00
James Turner
4560095c36
Change props.cxx to throw std::exception
...
Throwing std::string is slightly unconventional, switch to throwing
exceptions inheriting std::exception.
2020-09-10 11:25:15 +01:00
James Turner
1341d1e1f2
Missed fix for logging in the test-suite
2020-09-08 12:34:37 +01:00