Upcoming Games

(UTC times)


Full list
Add a game

Upcoming Events

No events to display

Access Violation - more....

You are here: Home > Forum > General > General questions, comments, and issues > Access Violation - more....

Page 1 of 1

Access Violation - more.... 23/07/2017 at 17:16 #96572
VInce
Avatar
579 posts
Clive,

Sorry for the new thread but I though it would be a better heading.

As requested I've caught the access violation message which we and others discussed and it says :-

Internal error: Exception:1B06 in DoDividing (EAccessViolation: Access violation at address 400058E2 in module 'rtl60bpl' Read of address C08B0058)

As last time, the message came up after 0S00 was put behind 1B06

Attached is a screen grab of the message and saved games from 4 minutes before and also a few seconds after.

Hope it helps.

Vince

Post has attachments. Log in to view them.
I walk around inside the questions of my day, I navigate the inner reaches of my disarray, I pass the altars where fools and thieves hold sway, I wait for night to come and lift this dread away : Jackson Browne - The Night Inside Me
Last edited: 23/07/2017 at 17:18 by VInce
Reason: None given

Log in to reply
Access Violation - more.... 01/08/2017 at 19:44 #97797
VInce
Avatar
579 posts
...another one, this time on the Westbury sim.

Occurred during the detachment of 0V98 from 7V98 on the DR at Westbury.

Attached is a .jpg of th access violation message and a save taken at 0640. The access violation occurred at 06:41:13 sim time.

Vince

Post has attachments. Log in to view them.
I walk around inside the questions of my day, I navigate the inner reaches of my disarray, I pass the altars where fools and thieves hold sway, I wait for night to come and lift this dread away : Jackson Browne - The Night Inside Me
Last edited: 01/08/2017 at 19:45 by VInce
Reason: None given

Log in to reply
Access Violation - more.... 02/08/2017 at 07:33 #97818
BarryM
Avatar
2158 posts
Vince, I played your ssg twice and did not get an Access Violation. May I suggest you reload your Loader from scratch and see if that fixes your AV.

Barry

Barry, Sydney, New South Wales, Australia
Log in to reply
Access Violation - more.... 02/08/2017 at 08:10 #97820
VInce
Avatar
579 posts
Barry,

Clive has acknowledged that there is a problem with the core code which is very difficult to find.

He has asked for as many saved games and as much information as is available.

Many others have had the problem but it is not repeatable. It happens once then if a save taken before the problem occurred is run, it does't happen the next time. I too ran the save and it didn't happen the next time, or the time after that!

See this thread :- https://www.SimSig.co.uk/Forum/ThreadView/43813

I too have run through Westbury, Exeter, Peterborough and Derby many many times without it happening.

That's why its so difficult to find.

Vince

I walk around inside the questions of my day, I navigate the inner reaches of my disarray, I pass the altars where fools and thieves hold sway, I wait for night to come and lift this dread away : Jackson Browne - The Night Inside Me
Last edited: 02/08/2017 at 08:12 by VInce
Reason: None given

Log in to reply
Access Violation - more.... 02/08/2017 at 09:26 #97822
postal
Avatar
5269 posts
VInce in post 96572 said:
Internal error: Exception:1B06 in DoDividing (EAccessViolation: Access violation at address 400058E2 in module 'rtl60bpl' Read of address C08B0058)
Currently testing a TT for a sim that has been re-written and will be re-released in due course. During the testing I got a very similar DoDividing message. I had been fiddling with the F4 version of the TT and amended the times of the new portion created by the divide while the divide was taking place. After the exception message everything seemed to be working OK. However, when I checked F2 the divided portion was not in sim; F4 had the portion marked as entered.

May be nothing to do with the original bug or may add a bit more information to try and help track it down. Haven't reported it on Mantis as I haven't managed to repeat it and it may have been caused by my fiddling anyway.

“In life, there is always someone out there, who won’t like you, for whatever reason, don’t let the insecurities in their lives affect yours.” – Rashida Rowe
Log in to reply
The following user said thank you: VInce
Access Violation - more.... 03/08/2017 at 20:54 #97870
clive
Avatar
2799 posts
I can see that I need to do some more explaining before people get too worked up about this.

Firstly, I'l repeat: an access violation *ALWAYS* means there's a bug in the core code. It might only be triggered by erroneous sim data, but it's still a core code bug - the core code should detect the data error and report or work around it.

My hypothesis - based on long experience - is that a variable in the core code that is supposed to be referring to something (e.g. a train or a timetable entry) is instead set to "nil", meaning it doesn't refer to anything. The other possibility is that an object has been destroyed (e.g. when trains join, one of the two trains no longer exists and is destroyed) but something else is trying to refer to it.

Following an access violation, the simulation logs will contain some debugging information. Sometimes this is enough to work out what the problem is. Unfortunately, that's not the case for the one log I've seen so far. Vince, if you can provide the log for the game that went wrong this time, it might help since the access violation is in a different place.

A saved game is *NOT* a dump of the simulation's memory. So I can't just look at the saved game to find out what is wrong. Rather - as anyone who has looked inside it will know - it's an XML file containing a description of the simulation state. When the game is reloaded, the core code starts with a brand new copy of the simulation and then creates (for things like trains) or updates (for things like signals) the various objects forming the simulation. Since the loading is done by completely separate code to that that runs the simulation (and, presumably, contains the bug), it's quite possible that the reloaded game won't show the problem. This does not surprise me.

(Programmers will realize that the converse is possible: a bug in the loading code means that a game will run fine, but when reloaded it crashes or has a bug report like this. But this isn't the case this time.)

What I need to investigate, therefore, is a way to reproduce the problem. That means a sequence of actions which will tickle the bug and, subsequently, cause the access violation. It's quite possible that the bug didn't happen immediately before the divide but some time earlier, such as when the train entered. So it can't be reproduced from a save that was taken after the bug happened. What's necessary is to find the sequence of actions that tickles it; this might mean starting from a new game or it might mean starting from a save made earlier in the game, before the bug happened. I know that's tedious, but if anyone is willing to try that will be a great help.

Until I get a reproducable case, or get lucky in my other investigations, there's not much I can do. But I am keeping an eye on this thread and these problems.

Hope this explains what's going on a bit more.

Log in to reply
The following users said thank you: Stephen Fulcher, postal, BarryM
Access Violation - more.... 03/08/2017 at 21:08 #97872
VInce
Avatar
579 posts
Clive,

I should have attached this as well, sorry.

The whole log is attached and a text extract of the appropriate entry is appended below.

========== SimSig Loader version 4.6.4 ==========
System date/time: 01/08/2017 10:39:13
Loading westbury from C:\Users\Public\Documents\SimSig\Simulations\Westbury.sim
Simulation: westbury
Timetable: C:\Users\Public\Documents\SimSig\\Timetables\westbury\Westbury Weekday 25 05 2016 0000 Start V1.1 modified by VS.WTT
Start time: 00:00:00
LicenseID: 263
CompilerVersion: 4.3.1
CompileDateTime: 2015/01/04 21:05:35
Simulation loaded
06:41:13 0055B55C 0055B6AD 0055B722 004ECC75 004FA55F 004FE714 004DBC95 400D603A 4003945E 74802B5B 747F50F3 747F4A82 747EFD90 400F5834 005756A8 76688744 773F582D 773F57FD
06:41:13 0055B55C 0055B6AD 0055FD29 004DBC95 400D603A 4003945E 74802B5B 747F50F3 747F4A82 747EFD90 400F5834 005756A8 76688744 773F582D 773F57FD



Vince

Post has attachments. Log in to view them.
I walk around inside the questions of my day, I navigate the inner reaches of my disarray, I pass the altars where fools and thieves hold sway, I wait for night to come and lift this dread away : Jackson Browne - The Night Inside Me
Last edited: 03/08/2017 at 21:10 by VInce
Reason: None given

Log in to reply
Access Violation - more.... 05/08/2017 at 10:59 #97899
Hawk777
Avatar
386 posts
clive in post 97870 said:
My hypothesis - based on long experience - is that a variable in the core code that is supposed to be referring to something (e.g. a train or a timetable entry) is instead set to "nil", meaning it doesn't refer to anything. The other possibility is that an object has been destroyed (e.g. when trains join, one of the two trains no longer exists and is destroyed) but something else is trying to refer to it.

Until I get a reproducable case, or get lucky in my other investigations, there's not much I can do. But I am keeping an eye on this thread and these problems.

Hope this explains what's going on a bit more.
Not to go and tell anyone how to do their jobs or anything, and you may already know about this, but I’m often surprised at the number of programmers who don’t. Are you familiar with a tool called Valgrind? It’ll catch things like use-after-free, use of uninitialized memory, and so on. I don’t know if it works on Delphi programs nor if it works under Windows, but if it does, I have occasionally found it amazingly useful and this is exactly the sort of thing it might help sniff out.

Log in to reply
Access Violation - more.... 16/10/2017 at 08:33 #102303
clive
Avatar
2799 posts
postal in post 97822 said:

During the testing I got a very similar DoDividing message. I had been fiddling with the F4 version of the TT and amended the times of the new portion created by the divide while the divide was taking place.
I'm pretty sure (see the other thread) that this is the same bug.

Log in to reply
The following user said thank you: VInce
Access Violation - more.... 16/10/2017 at 08:37 #102304
clive
Avatar
2799 posts
Hawk777 in post 97899 said:

Not to go and tell anyone how to do their jobs or anything, and you may already know about this, but I’m often surprised at the number of programmers who don’t. Are you familiar with a tool called Valgrind? It’ll catch things like use-after-free, use of uninitialized memory, and so on. I don’t know if it works on Delphi programs nor if it works under Windows, but if it does, I have occasionally found it amazingly useful and this is exactly the sort of thing it might help sniff out.
I'm aware of Valgrind, but I haven't been able to find a way to run Delphi programs under it.

Now that I know the root cause, I can see that Valgrind might have spotted it *if* the run had done certain things that triggered the actual problem, quite possibly including certain user actions. But it wouldn't have automatically shown up, just as the bug doesn't always happen when a train divides.

Log in to reply
The following user said thank you: VInce