The International Simutrans Forum

 

Author Topic: Bug: Changing a passenger line schedule deletes all air passenger routing info.  (Read 236 times)

0 Members and 1 Guest are viewing this topic.

Offline DrSuperGood

  • Dev Team
  • Devotee
  • *
  • Posts: 2549
  • Languages: EN
Fairly simple one that will probably be notoriously hard to track down...

Under some conditions some passenger links between stops will not be created making it function as if no passenger link exists between the stops despite there being a fully functional passenger line. The conditions to cause this either involve save/load cycling or modifying unrelated lines involving one of the stops. Symptoms are basically that the link will sometimes appear and other times not.

On the server I am frequently observing this with my aircraft routes. For example...
"(1731) Line" : Yerington International <-> Cagbury International Airport
This is a premium passenger service running high speed aircraft connecting a remote island chain with the main land. That has been operating for several months. In both airports under Details there should be a passenger link with each other reflecting that passengers can route via the premium air service. However at the time of writing this post no such link is listed for either airport.

This is not the only passenger air line that seems effected by this. It also happens sporadically for others.

It appears to be limited to passengers only. Mail is correctly listed and appears to function reliably.

EDIT:
This is a lot worse than first thought. Changing the schedule for any passenger line will delete all routing information from all airports, including those for lines of other players. This makes operating passenger aircraft lines reliably impossible as seldom will passengers even try to use the lines.

To recreate...
  • Load server game. Online or offline does not matter as the issue is completely re-creatable.
  • Look at routing information for an airport. I recommend Yerington International @3576,2755 as it has both internal and external destination passenger air lines operating from it.
  • Confirm passenger routing entries exist using the Details view of Yerington International for both Cagbury International Airport and Millstead Airport and leave the Details window open to watch for changes.
  • Can also confirm inverse entries on the related airports exist if desired.
  • Select Royal Western company and open the line manager.
  • Modify any passenger line. For example change the line frequency of the only tram line from 40 to 41. This line is not directly connected to any airport.
  • Almost immediatly should both the above mentioned passenger routing entries disappear from details view. Passengers will no longer accumulate at any airport for any air passenger route. Any passengers that have already accumulated will still wait for their intended aircraft, however no more will come.
  • All airports can be checked and all airports will be missing their passenger routing entries for air lines.
The results will not happen if paused, but one can change the schedule while paused and they will happen once unpaused.

Save/load cycling rebuilds the air line passenger routing information. This is likely why this bug has gone undetected for weeks since this happens fairly frequently on the server.
« Last Edit: September 10, 2018, 09:42:53 AM by DrSuperGood »

Offline jamespetts gb

  • Simutrans-Extended project coordinator
  • Moderator
  • *
  • Posts: 18030
  • Cake baker
    • Bridgewater-Brunel
  • Languages: EN
I am currently investigating this. What appears to happen is that the connexion information is lost when the path explorer is first set to run, but is eventually restored when the path explorer completes its work (which is why a load/save cycle will restore these data, as a path explorer run is completed on loading).

Offline jamespetts gb

  • Simutrans-Extended project coordinator
  • Moderator
  • *
  • Posts: 18030
  • Cake baker
    • Bridgewater-Brunel
  • Languages: EN
This is indeed difficult to isolate effectively. I have created a small test game in which I can reproduce this: the connexions for air traffic disappear when the path explorer is invoked, only to reappear the next time that it is invoked. I have not yet found which specific piece of code in the path explorer actually triggers this. I have also not found any code in the path explorer, nor in the halts (which store the connexions data) which distinguishes between air and other types of transport.

My testing has been very severely hampered by failing hardware on my own computer, which seems to be resulting in blue screen errors every 15-30 minutes this evening. It is impossible to continue testing in these circumstances. It is difficult to tell at this juncture whether the problem might abate in the future (as it has in the past), or whether I will need to replace the computer fully before I am able to resume any intensive work of the sort that fixing this will entail.

If anyone would like to look into what might be causing this in the meantime, that would be very helpful, as this is an especially bizarre and mysterious bug, relating as it does specifically to air transport but originating in a part of the code that has no algorithm that appears capable of distinguishing air transport from any other sort.

Offline DrSuperGood

  • Dev Team
  • Devotee
  • *
  • Posts: 2549
  • Languages: EN
Quote
If anyone would like to look into what might be causing this in the meantime, that would be very helpful, as this is an especially bizarre and mysterious bug, relating as it does specifically to air transport but originating in a part of the code that has no algorithm that appears capable of distinguishing air transport from any other sort.
I have seen it happen to other types of transport and I think I even reported it somewhere in the past. However as can been seen the other types of transport are nowhere near as bad and usually eventually fixed themselves in a way that did not necessitate looking further into.

Could it be related to passenger classes? Air generally uses very high and other more premium classes which generate small traffic. On the other hand most of my other passenger lines offer some sort of very low class option so generate huge quantities of passenger traffic.

Quote
It is difficult to tell at this juncture whether the problem might abate in the future (as it has in the past), or whether I will need to replace the computer fully before I am able to resume any intensive work of the sort that fixing this will entail.
Usually caused by the GPU or PSU. Of course it might not be the case just statistically over the last 15 years I have had many of those things fail. PSU is usually the main electrolytic capacitors reaching end of life causing unreliable voltage levels on the rails which fall below the stable operating voltage of some components causing undefined behaviour which eventually triggers an OS BSoD. GPU I am guessing it is the power circuitry for similar reasons which manifest in any of graphical glitches to eventual driver crashes and if the OS cannot restart the driver it will BSoD.

All BSoD generate some sort of error descriptor which can be viewed with blue screen viewer and such. GPU caused BSoD would be from graphic driver related errors. Running a memory test can rule out main memory being the cause.