Skip to content
New issue

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

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

Already on GitHub? Sign in to your account

Fix index out of range for stop_times last arrival of multi-section run #704

Merged
merged 2 commits into from
Jan 18, 2025

Conversation

traines-source
Copy link
Contributor

@traines-source traines-source commented Jan 18, 2025

I stumbled upon a motis crash libc++abi: terminating due to uncaught exception of type cista::cista_exception: bucket::at: index out of range with the 06.01.2025 DELFI GTFS and this query (didn't dare to try it out on one of the public instances...):
/api/v1/stoptimes?stopId=gtfs_de%3A03159%3A33817%3A%3A8&time=2025-01-18T13%3A08%3A00.000Z&arriveBy=true&n=10

Occurs in nigiri/src/rt/frun.cc#L105 for the last stop of multi-section trips, because it would always look for a event_type::kDep.
I.e. an alternative fix with less (interface) changes would be to make get_trip_index(ev_type) in nigiri more robust, but would then still lead to wrong results for the trip_id at stops where the trip_id switches (if I understand correctly).

include/motis/tag_lookup.h Outdated Show resolved Hide resolved
@felixguendling
Copy link
Member

Thank you! 🌠

Do you think it makes sense to add a utl::verify somewhere to prevent this from happening in case the wrong event type would be supplied in the future?

@felixguendling
Copy link
Member

Hmm.. it already fired an exception. I would've hoped that this gets caught somewhere in the HTTP handler.

Co-authored-by: Felix Gündling <[email protected]>
@traines-source
Copy link
Contributor Author

traines-source commented Jan 18, 2025

Yes rather than utl::verify (which would basically have the same result, just with a nicer error message, right?) I would maybe make get_trip_index more robust (but now that the event_type param is everywhere it forces you to think about it, so it should be ok like that as well). And yes I was surprised that this took down motis entirely, not only the thread or sth.

@felixguendling
Copy link
Member

felixguendling commented Jan 18, 2025

@felixguendling felixguendling merged commit 3c361bb into motis-project:master Jan 18, 2025
11 of 12 checks passed
@felixguendling
Copy link
Member

felixguendling commented Jan 18, 2025

Ah. I guess it's because those methods in frun are marked noexcept. Maybe it would be better to just get writ of noexcept in MOTIS code completely except if it's proven to improve performance (which is rarely the case - and if it improves performance it's usually not really a big difference).

@traines-source
Copy link
Contributor Author

Ah yes. And maybe we should, because a dying motis is a bad thing :)

D3vZro added a commit to MoViDe-Project/motis that referenced this pull request Jan 30, 2025
* Use `maxTravelTime` to filter results (motis-project#668)

* Use 'maxTravelTime' to filter results

* Change unit to minutes

* Fix formatting

* Fix type for MSVC build

* Update nigiri dependency

* Set limit for maximum travel time

* GBFS: Performance/Memory Improvements + Vehicle Types (motis-project#670)

* gbfs: partition providers, faster updates, less memory usage

* fix vehicle_docks_available

* slightly faster geofencing zone mapping

* rename provider_cache -> provider_file_infos

* ts formatting

* formatting

* clang fixes

* clang fix

* clang fixes

* trying to fix apple clang

* static_cast all the things

* review changes

* fix include

* 65k gbfs providers should be enough

* remove obsolete comment

* sort vehicle status before diff

* fill cache during gbfs update

* cleanup

* partition vehicle types by form factor + propulsion type

* rental api changes (RENTAL mode + form factor + propulsion type)

* ui fix

* rename provider segment -> products

* vehicle type id -> idx

* rename more segment -> products

* one more r-tree to speed up geofencing zone mapping

* clang fix

* fix api descriptions

* api: add rental provider filter

* ui: fix direct connection display for rental connections

* return constraint support, allow roundtrip for direct connections

* ui formatting

* fix missing gbfs data after update

* http proxy support

* share decompressed bitvecs between routing requests

* fix missing initializer

---------

Co-authored-by: Felix Gündling <[email protected]>

* replace wheelchair with pedestrianProfile and useRoutedTransfers params (motis-project#683)

* replace wheelchair with pedestrianProfile and useRoutedTransfers parameters

* fix test

* ui: debounce search requests

* increase trains limit to support big cities like Paris/London/..

* add timeout option

* cli changes (motis-project#685)

* cli changes

* wip

* update nigiri

* Update README.md: not beta anymore

* update nigiri: speedup ~8% by not finding 24h+ transfers

* basic benchmark and QA tooling (motis-project#686)

* bench

* wip

* wip

* wip

* wip

* fix command line flag handling

* full dataset test (motis-project#687)

* full dataset test

* wip

* wip

* wip

* wip

* wip

* wip

* wip

* wip

* wip

* wip

* body size limit 128M

* cmake: Add option to pass flags not used for host tools (motis-project#689)

* update nigiri: rt update fixes time travel

* more rebostness against invalid delay update data

motis-project/nigiri#162

* update nigiri: trim stop time before empty check for interpolation

* motis config: fix crash with no parameters

* update nigiri: better trip names (motis-project#695)

* polish translation

* Detailed transfers flag + output exactly what nigiri routed (motis-project#698)

* wip

* output exactly what nigiri routed

* remove logging output

* remove unused variable

* fix eval

* wip

* wip

* Initial style guide docs/STYLE.md

* Fix missing closing tag (motis-project#700)

* Fix missing closing tag

* Add sections for important tools

This adds a section for `strong`, as well as `vector_map` and `vecvec`.

* Fix index out of range for stop_times last arrival of multi-section run (motis-project#704)

* fix index out of range for stop_times last arrival of multi-section run

* follow style guide

Co-authored-by: Felix Gündling <[email protected]>

---------

Co-authored-by: Felix Gündling <[email protected]>

* (Mobile) UI improvements (motis-project#705)

* ui: move components to lib

* ui: make components more responsive

* ui: more compact layout

* ui: i18n fixes

* ui: make toggle button state more visible

* ui: error handling, avoid repeated effect triggering

* ui: more small screen adjustments

* ui: url state handling

* ui: show backend error msgs, compact transfer display

* UI fixes (motis-project#710)

* ui: fall back to black routeTextColor (gtfs spec)

* update ui deps

* ui: workaround to avoid clickthrough

* ui: linting

* update nigiri: monotonicity enforcement on utc times (fixes interpolation for frequency expanded trips)

* ui changes

* Improve formatDuration (motis-project#713)

* Update formatDuration.ts

* fix formatting

* fix formatting

* Fix formatting

* osr_footpaths: add missing footpaths (motis-project#707)

* osr_footpaths: add missing footpaths

* update osr (ramp support)

* wip

* wip

* wip

* wip

* wip

* wip

* wip

* wip

* wip

* wip

* formatting

---------

Co-authored-by: Michael Kutzner <[email protected]>
Co-authored-by: Pablo Hoch <[email protected]>
Co-authored-by: Felix Gündling <[email protected]>
Co-authored-by: Felix Gündling <[email protected]>
Co-authored-by: Jonah Brüchert <[email protected]>
Co-authored-by: Traines <[email protected]>
Co-authored-by: Altonss <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants