News:

Simutrans Sites
Know our official sites. Find tools and resources for Simutrans.

r6520 Bugged long block signals when placed one tile before station tile

Started by Spacethingy, June 30, 2013, 08:44:47 PM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

Spacethingy


I think I'm right in saying that a long-block signal is just like an ordinary signal - except it ignores stations.


If so, the attached save shows a tram and a train apparently jammed buggily at a longblock signal with a suitable signal up ahead to complete the long block. (Note the steam loco still emitting steam, even though it's "waiting for clearance", and is "moving" steadily at 50 km/h).


After some experimentation, I've noticed that the jamming occurs when the longblock signal is placed on the tile adjacent to a station. With one tile gap, the normal behaviour is observed. See the save file.


Hope that helps!


r6520, pak64 Linux Lubuntu (sorry, can't seem to get the nightlies working on my Linux box)
Life is like a Simutrans transformer:

You only get one of them, and you can't have it on a slope.


kierongreen

The condition occurs when a long block signal is placed one tile before the end of the next station. This wouldn't be a normal place to put a long block signal however simutrans should still cope with this condition in a way which makes sense.

prissi

It is rather strange. The code returns correctly everything. Debugging this, a convoi should not be able to pass a normal signal, the way the code is handling it. Hmm, will need to dig much deeper.

kierongreen


Dwachs

In the savegame, if you remove the normal signal on the tracks with the running train, it stops moving, too. I think route search for reserving the block reaches the tile, on which the train is standing.

I think the problem here is convoi_t::set_next_stop_index: it is called from waggon_t::is_weg_frei_longblock_signal with an INVALID_INDEX, thus the routine sets the next stop on the tile before the target, which is the signal again -> infinite loop.
Parsley, sage, rosemary, and maggikraut.

prissi


Dwachs

This problem is still there:
Quote from: Dwachs on July 02, 2013, 07:52:31 PM
In the savegame, if you remove the normal signal on the tracks with the running train, it stops moving, too. I think route search for reserving the block reaches the tile, on which the train is standing.
If there is only one long block signal on a circle, the train will stop forever at the signal.
Parsley, sage, rosemary, and maggikraut.

kierongreen

Even if there are other signals also? A long block signal will intentionally block if it's the only signal present on a loop.

Dwachs

Quote from: kierongreen on July 06, 2013, 01:56:11 PM
Even if there are other signals also? A long block signal will intentionally block if it's the only signal present on a loop.
No other signals, only one long-block on a loop.

The code has a check for this situation to allow passing the signal, if only train on track is the train sitting at the signal. It also shows the same behavior as in the original report: Train is waiting at signal but steam engine is running.
Parsley, sage, rosemary, and maggikraut.

prissi