Config
Log for #openttd on 7th February 2019:
Times are UTC Toggle Colours
00:00:07  <Samu> for the client crash, I think the problem is here at network_client.cpp line 1176 and 1174 should be switched
00:01:11  <Samu> CloseConnection makes _networking = false, and when the save occurs, it is already saving with no network
00:01:24  <Samu> there is no instance running on the client, only on the server
00:01:34  <Samu> should save empty
00:01:50  *** supermop_work has joined #openttd
00:01:52  *** tokai|noir has joined #openttd
00:01:52  *** ChanServ sets mode: +v tokai|noir
00:03:45  *** supermop_work_ has joined #openttd
00:06:12  <glx> oh add that to the issue
00:07:01  <DorpsGek_II> [OpenTTD/OpenTTD] SamuXarick commented on issue #7188: Both server and client crash, AI related https://git.io/fh9QL
00:08:44  *** tokai has quit IRC
00:08:49  <Samu> i actually wonder
00:08:53  <Samu> save empty
00:09:03  <Samu> gonna test brb
00:10:57  *** supermop_work has quit IRC
00:11:25  <Samu> weird, there are two emergency saves
00:11:32  <Samu> shouldn't 1 be enough?
00:12:33  <Samu> CloseConnection does an emergency save
00:12:50  <Samu> then another is done after the error message
00:13:08  <Samu> is that the intention?
00:13:09  <glx> I edited your comment to link to the code
00:14:27  <glx> indeed seems there's too much saving
00:15:18  <Samu> even the error message is repeated
00:17:16  <LordAro> make a note of it in the issue
00:17:19  *** Thedarkb1-T60 has quit IRC
00:17:29  <LordAro> it's not directly related, but can probably be fixed easily at the same time
00:17:37  <LordAro> not worth an extra issue
00:19:49  <glx> anything useful must go in the issue :)
00:20:12  *** Thedarkb1-T60 has joined #openttd
00:20:30  <Samu> edited
00:21:27  <LordAro> Samu: please try to write things properly, don't just copy irc logs
00:21:46  <LordAro> there's so much extra crap in that text
00:23:09  <Samu> ok edited
00:24:35  <DorpsGek_II> [OpenTTD/OpenTTD] glx22 commented on issue #7188: Both server and client crash, AI related https://git.io/fh9QW
00:24:53  <glx> that's the useful info :)
00:27:35  <glx> and maybe other calls should be checked too
00:27:54  <Samu> May 24 2018, it's recen
00:27:55  <Samu> t
00:29:35  <glx> yes it's recent, but rare enough so it was not reported yet
00:36:44  <Samu> no more crash for client
00:36:54  <Samu> this was indeed the problem
00:37:08  <Samu> as for server, gonna investigate now
00:38:30  <DorpsGek_II> [OpenTTD/OpenTTD] nikolas updated pull request #7086: Change #6173: Update SDL driver to use SDL 2.0 https://git.io/fhamZ
00:40:41  *** supermop_work_ has quit IRC
00:40:42  <Samu> company 2 is the exact one i told to reload ai
00:46:18  <Samu> assert(this->suspend < 0);
00:46:25  <Samu> this->suspend is 0
00:46:35  <Samu> 0 < 0 false, and asserts
00:46:56  <Samu> int suspend;                          ///< The amount of ticks to suspend this script before it's allowed to continue.
00:47:31  <Samu> it was never suspended, it's not even started
00:47:43  <Samu> it's right about to start a new one
00:48:22  <Samu> hmm
00:48:54  <Samu> it's trying to execute an out of date DoCommand?
00:49:24  <Samu> the script that was removed before the Reload was probably suspended
00:49:49  <Samu> the script that is about to start is fresh
00:49:54  <Samu> how to solve
01:21:28  <DorpsGek_II> [OpenTTD/OpenTTD] glx22 commented on issue #7188: Both server and client crash, AI related https://git.io/fh97I
01:21:38  <glx> that's where to solve
01:23:13  <Samu> heh I figured as much
01:23:20  <Samu> was also eyeing that
01:25:11  <Samu> the company exist
01:25:15  <Samu> the instance exists
01:25:34  <Samu> both company and instance are already post reload
01:25:58  <glx> yes but it then assumes it's the AI that called the command
01:26:24  <Samu> but it wasn't
01:26:41  <glx> and of course it expect it to be suspended and waiting for the Continue() call
01:26:44  <Samu> it was the one pre-reload
01:27:09  *** Wormnest has joined #openttd
01:27:43  <Samu> what kind of test to put there :|
01:29:46  <glx> try adding || !c->ai_instance->is_started
01:31:48  <Samu> it is started
01:32:04  <glx> are you sure ?
01:32:06  <Samu> but let's try
01:32:28  <glx> is_started means fully initialised
01:33:21  <Samu> is_started = true
01:33:40  <Samu> can't access is_started anyway
01:34:00  <glx> ah yes it's private
01:38:45  <Samu> it's protected, not sure if it's the same as private
01:39:07  <glx> not accessible from outside in both case
01:39:56  <Samu> IsSleeping is public
01:40:02  <Samu> bool IsSleeping() { return this->suspend != 0; }
01:40:07  <Samu> gonna try this
01:40:54  <Samu> if (c == NULL || c->ai_instance == NULL || !c->ai_instance->IsSleeping() ) return;
01:41:21  <glx> should prevent the crash I think
01:45:27  *** Thedarkb-X40 has joined #openttd
01:50:52  <Samu> still crash
01:51:39  <Samu> gonna rebuild again just to make sure
01:52:19  *** Thedarkb1-T60 has quit IRC
02:00:54  <Samu> assert(this->suspend < 0);
02:00:57  <Samu> 1 < 0
02:01:09  <Samu> :(
02:01:39  <glx> hmm for network games it should never be >0 IIRC
02:01:58  <Samu> that IsSleeping only checks this->suspend != 0
02:02:27  <glx> yes because for single player suspend is >0 when suspended
02:02:36  <glx> but for network it's <0
02:03:14  <glx>     if (this->suspend   < -1) this->suspend++; // Multiplayer suspend, increase up to -1.
02:03:14  <glx>     if (this->suspend   < 0)  return;          // Multiplayer suspend, wait for Continue().
02:03:14  <glx>     if (--this->suspend > 0)  return;          // Singleplayer suspend, decrease to 0.
02:03:23  <glx> that's how it works
02:03:47  <glx> if it's >0 in network, something is wrong
02:04:22  <Samu> the command was queued 2 ticks away?
02:04:33  <Samu> erm, behind*
02:05:06  <glx> or Continue() has been called when suspend was < -1
02:05:07  <Samu> could 250000 #opcodes be part of it?
02:05:26  <Samu> there can be only too many commands queued, right?
02:05:46  <Samu> just wondering
02:06:08  <glx> no, once your AI did a DoCommand it will be suspended until it get the result
02:07:20  <Samu> but the command is not yet sent
02:07:26  <Samu> it's queued first
02:07:56  <Samu> next tick is executed, unless the queue is full or something that it makes it require 2 ticks?
02:08:05  <Samu> i don't know, just trying to figure out
02:08:05  <glx> script_object.cpp:310 the command is "sent"
02:08:36  <glx> line 342 the script is suspended, and will wait for Continue()
02:12:08  <Samu> delay = 1
02:12:22  <Samu> which should turn to -1
02:12:28  <Samu> according to that line
02:12:48  <glx> yes but that's working correctly
02:13:13  <Samu> seems to be the new instance starting that's setting it to 1?
02:13:24  <glx> the problem is the new AI yes
02:14:08  <Samu> during initialization?
02:14:20  <glx> no on creation it's 0
02:14:45  <Samu> that's strange
02:14:51  <Samu> then what sets it to 1?
02:22:43  <glx> script_instance:192 add assert(!_networking || this->suspend <= 0); same lines 222 and 243
02:25:24  <glx> but I think the AI called Sleep()
02:26:46  <glx> then the command from the old AI returned
02:27:33  <Samu> _networking is undefined :|
02:28:17  *** Wormnest has quit IRC
02:29:16  <glx> add #include "../network/network.h"
02:29:49  <glx> around line 31
02:30:24  <Samu> building
02:30:26  <Samu> testing
02:30:51  <Samu> assertion failed right away
02:30:52  <glx> I think it may assert even before you restart the AI
02:30:57  <Samu> yes
02:31:05  <Samu> game was just starting
02:31:33  <glx> an AI called Sleep() probably
02:31:36  <Samu> line 222
02:32:20  <glx> but that's for constructor and Start
02:32:31  <Samu> this->suspend = 1
02:32:45  <Samu> 1 <= 0
02:32:54  <glx> there's a Sleep(1) in Start() ?
02:33:21  <Samu> how would I know?
02:33:56  <glx> check the AI source
02:34:00  <Samu> oh
02:34:02  <Samu> that
02:34:18  <Samu> heh, i dont even know which ai started, it picked randomly
02:34:49  <Samu> ah
02:34:52  <Samu> OWNER_DEITY
02:34:58  <Samu> the GS started
02:35:22  <glx> yes makes sense the GS use Sleep()
02:35:23  <Samu> i think the GS is NoCarGOal
02:36:10  <Samu> yep, NoCarGoal
02:36:32  <glx> but indeed the only reason suspend can be > 0 is Sleep
02:37:03  <glx> and it's usually ok, except in case the AI is restarted with pending commands
02:37:28  <Samu> 	// Wait for the game to start 	this.Sleep(1);
02:37:32  <Samu> yes, it has a Sleep
02:38:11  <glx> you can remove the asserts and the include
02:39:14  <Samu> done
02:41:14  <glx> I think we need to add IsWaiting()
02:42:25  <glx>     bool IsWaiting() { return this->suspend < 0; } after IsSleeping() in script_instance.hpp
02:42:34  <glx> and use it in CcAI
02:45:24  <glx> we want to care about the command result only if we are waiting for it
02:46:46  <glx> hmm but that could go wrong if we use DoCommand() but receive the previous result
02:49:19  <Samu> can't get an assert anymore
02:49:22  <Samu> hmm
02:49:56  <glx> yes no assert because we check before the call
02:50:47  <Samu> what could go wrong now?
02:51:04  <Samu> receive the result
02:51:31  <Samu> what will it do to the result?
02:51:48  <glx> the old AI called a command, is stopped, the new AI call a command, receive result of old AI call
02:52:39  <Samu> I see
02:52:40  <glx> if the new call happens after the result, no problem because it has been discarded
02:52:54  <glx> but if it happens before
02:53:21  <Samu> it'd be put in a que first
02:53:44  <glx> yes and results are given in order
02:55:34  <Samu> wasn't the command called Sleep?
02:56:03  <glx> no Sleep() is when the AI decides to sleep
02:56:17  <glx> no need to wait for the server in that case
02:56:44  <glx> indeed Continue() just convert the remaining waiting time in sleep time
02:57:50  <glx> so for multiplayer AI stopping is "wrong"
02:58:52  <Samu> would it mean the old AI could cause the new AI sleep for the time determined by the old ai? that's funny
02:59:11  <glx> no
02:59:42  <glx> the old AI can't do anything to the new AI
03:00:44  <glx> except the possible incorrect command result
03:04:07  <glx> but that won't be easy to prevent
03:04:49  *** Thedarkb-X40 has quit IRC
03:07:44  *** Speedy` has quit IRC
03:08:22  *** HerzogDeXtEr has joined #openttd
03:09:00  <Samu> line 681 of script_instance.cpp ?
03:09:09  <Samu> doesn't look that serious
03:09:41  <Samu> important, i mean
03:10:19  <Samu> hmm, it sets a bunch of variables
03:10:26  <glx> yeah probably very low probability to happen
03:11:54  <Samu> ScriptObject::IncreaseDoCommandCosts(result.GetCost());
03:12:01  <Samu> this one may be the serious one
03:12:28  <Samu> if i understand what it do, it will subtract money from the new company?
03:12:41  <glx> but that won't be the place to fix the possible issue
03:13:14  <glx> it's more in AI:Stop() side
03:13:31  <Samu> oh oh, crash
03:13:45  <glx> where ?
03:14:14  <Samu> >	openttd.exe!SQClass::Mark(SQCollectable * * chain) Line 529	C++
03:14:40  <Samu> the only thing in the call stack
03:14:41  <Samu> nothing else
03:14:44  <Samu> 1 line
03:15:32  <Samu> void SQClass::Mark(SQCollectable **chain)
03:16:23  <Samu> Unhandled exception at 0x00007FF63B8C42CF in openttd.exe: 0xC0000005: Access violation writing location 0x000000B8988BFFD0. occurred
03:16:44  <Samu> Exception thrown at 0x00007FF63B8C42CF in openttd.exe: 0xC0000005: Access violation writing location 0x000000B8988BFFD0. occurred
03:16:51  <Samu> meh
03:17:18  <glx> that's the garbage collector
03:19:38  <Samu> what does it do?
03:20:24  <glx> memory cleaning
03:28:19  <glx> and it's initiated in only 2 places AI::GameLoop() and Game::GameLoop()
03:37:16  *** debdog has joined #openttd
03:38:06  *** Gustavo6046 has quit IRC
03:40:39  *** D-HUND has quit IRC
03:51:27  *** HerzogDeXtEr has quit IRC
04:01:49  *** Mahjong1 has joined #openttd
04:02:07  <DorpsGek_II> [OpenTTD/OpenTTD] nikolas opened issue #7189: fluidsynth driver plays music too loudly https://git.io/fh95K
04:08:54  *** Mahjong has quit IRC
04:24:33  *** Samu has quit IRC
04:36:46  *** glx has quit IRC
05:46:19  *** keoz has joined #openttd
06:17:28  *** sla_ro|master has joined #openttd
06:24:59  <DorpsGek_II> [OpenTTD/OpenTTD] PeterN commented on pull request #7086: Change #6173: Update SDL driver to use SDL 2.0 https://git.io/fh9d0
06:58:43  *** sla_ro|master has quit IRC
07:11:35  *** andythenorth has joined #openttd
07:20:19  *** andythenorth has quit IRC
07:21:07  <peter1138> It was him.
07:21:19  *** keoz has quit IRC
07:24:09  *** Markk has quit IRC
07:27:43  *** andythenorth has joined #openttd
07:30:20  <andythenorth> o/
08:00:06  <Pikka> o/
08:00:23  <peter1138> Yes but no.
08:05:26  <LordAro> seems legit
08:05:33  <andythenorth> well
08:06:09  <andythenorth> \o/ Horse compiled
08:06:13  <andythenorth> it was not compiling
08:07:48  <DorpsGek_II> [OpenTTD/OpenTTD] PeterN commented on pull request #7184: Change: Distribute cargo to multiple stations or industries https://git.io/fh9Fl
08:14:09  * andythenorth fixing https://www.tt-forums.net/viewtopic.php?p=1218166#p1218166
08:14:21  <andythenorth> I should just build some default offsets into nml PP
08:14:43  <andythenorth> every newgrf has to piss around with the offsets for every vehicle length
08:14:50  <andythenorth> daft :)
08:15:07  <Eddi|zuHause> provide a default template?
08:17:21  <andythenorth> we should only need the template for 8/8
08:17:30  <andythenorth> the rest is deterministic maths :P
08:18:24  <Pikka> well
08:18:55  <Pikka> if you draw your shortened vehicles at the front of the 8/8 template, they should use the same offsets. Until you want to reverse them, anyway :)
08:19:04  * Pikka bbl
08:19:07  *** Pikka has quit IRC
08:29:12  <andythenorth> hmm
08:29:20  <andythenorth> default tracks are rather too wide for the trains :P
08:30:08  * andythenorth knew this, it's only noticeable when fixing offsets
08:30:33  *** andythenorth has quit IRC
08:34:06  *** supermop_Home has quit IRC
09:01:01  *** andythenorth has joined #openttd
09:02:51  <peter1138> well
09:46:09  *** Sularken has joined #openttd
09:49:02  *** andythenorth has quit IRC
09:50:24  *** andythenorth has joined #openttd
09:51:31  <andythenorth> time for another infosec meeting!
09:52:21  <andythenorth> well https://www.tt-forums.net/viewtopic.php?p=1218287#p1218287
10:05:45  *** andythenorth has quit IRC
10:06:28  <Eddi|zuHause> dunno what's happening, i started TF, and it freezes every few minutes, while paused
10:06:54  <Eddi|zuHause> just scrolling around the map
10:11:08  <Eddi|zuHause> in perf top i get lots of "ttm_mem_evict_first" "native_queued_spin_lock_slowpath" and "mutex_trylock"
10:19:17  <Eddi|zuHause> might be related to this https://lkml.org/lkml/2015/6/15/354
10:19:24  <Eddi|zuHause> can anyone translate that for me? :p
10:39:19  <peter1138> That is about PCI passthrough to a virtualized hardware.
10:39:54  <peter1138> At least, VT-D is.
10:40:16  *** andythenorth has joined #openttd
10:40:35  <Eddi|zuHause> so, probably not that related
10:40:48  <Eddi|zuHause> or someone put me in a virtual environment and i didn't notice
10:42:41  <Eddi|zuHause> there's also this thing https://bugs.freedesktop.org/show_bug.cgi?id=104082 which probably isn't all that related either, but they all talk about radeon graphics
10:51:34  *** Speedy` has joined #openttd
11:15:54  *** sla_ro|master has joined #openttd
11:47:18  <Eddi|zuHause> i'm gonna destroy everything now
11:47:30  *** Eddi|zuHause has quit IRC
11:48:06  <andythenorth> super
11:48:56  *** Eddi|zuHause has joined #openttd
11:49:40  <Eddi|zuHause> hm, this definitely did not work
12:03:41  <peter1138> super duper
12:26:14  *** Zeentch has joined #openttd
12:26:46  *** m3henry has joined #openttd
12:27:12  <Zeentch> Whee finally some OTTD people :D
12:29:21  <Zeentch> I was wondering, who was it that made the NML Highlighting xml file that's available to download, and do you think that that person could make a YAML 1.2 file for the highligting as well? I use Sublime text for all of my coding and i've recently started to get into NewGRF for OTTD and would be a lot easier with highlighting available as well.
12:33:38  <Eddi|zuHause> i feel like we discussed that before
12:34:01  <Zeentch> First time im here so i've not been a part of that discussion, how did it end?
12:34:25  <Sularken> With the Apocalypse.
12:34:40  <Eddi|zuHause> https://www.tt-forums.net/viewtopic.php?f=68&t=83970
12:35:37  <Zeentch> @Eddi|zuHause, thank you so much for the link :D
12:38:55  *** Markk has joined #openttd
12:39:15  <andythenorth> someone gonna make me one for BBEdit too? o_O
12:44:01  <Zeentch> can't bbedit use the xml file that is already around?
12:44:24  <andythenorth> dunno :)
12:48:13  <Zeentch> unfortunatly i can't test it since i'm not using a mac so it's kinda hard for me to try out, although i do have a mac mini that i need to sort out so might try it at that point.
13:15:29  *** Samu has joined #openttd
13:16:14  *** Flygon has quit IRC
13:17:11  <Samu> hi
13:19:48  <m3henry> o/
13:19:56  <Zeentch> O.O
13:20:22  *** Mazur has quit IRC
13:22:47  <Samu> lala
13:26:07  <Samu> this site is not safe https://webster.openttdcoop.org/?channel=openttd
13:26:26  <Samu> DLG_FLAGS_SEC_CERT_DATE_INVALID
13:26:50  <andythenorth> cert expired
13:27:03  <m3henry> not using letsencrypt?
13:28:06  <m3henry> oh no, it is, but no-one automated its renewal
13:34:12  <Samu> * Check if the instance is expecting an answer from a DoCommand.
13:34:16  <Samu> glx
13:34:31  <Samu> oh, he's offline
13:35:12  *** andythenorth has left #openttd
13:37:30  <Samu> is it normal for the garbage collector to crash?
13:37:59  <Samu> I can't reproduce it
13:38:33  <Samu> it's one of those rare crashes that occur from time to time
13:42:09  <peter1138> Is it normal to crash... Hmm!
13:43:04  <Samu> crash once in months
13:43:32  <Samu> if i try to make it crash again, i may not get it in a timely manner
13:48:46  <m3henry> Solution is obvious: Get rid of the GC xD
13:50:11  <peter1138> Just run out memory instead, yes :-)
13:50:54  <milek7> just needs more swap ;d
13:52:02  <Samu> so it ran out of memory?
13:52:09  <Samu> yesterday's night crash?
13:52:24  <peter1138> Who said that?
13:52:28  <Samu> you
13:52:32  <peter1138> No I didn't.
13:52:44  <Samu> hmm, then how does it crash?
13:52:52  <m3henry> You tell us
13:53:08  <peter1138> My comment was in response to "get rid of the GC" :)
13:53:12  <peter1138> Nothing to do with your crash.
13:53:23  <Samu> 03:16:23  <Samu> Unhandled exception at 0x00007FF63B8C42CF in openttd.exe: 0xC0000005: Access violation writing location 0x000000B8988BFFD0. occurred 03:16:44  <Samu> Exception thrown at 0x00007FF63B8C42CF in openttd.exe: 0xC0000005: Access violation writing location 0x000000B8988BFFD0. occurred
13:53:31  <Samu> <Samu> >	openttd.exe!SQClass::Mark(SQCollectable * * chain) Line 529	C++
13:53:48  <peter1138> Didn't glx already run through it with you?
13:53:55  <Samu> yes and no
13:53:57  <peter1138> Or did you forget?
13:54:40  <Samu> it's initiated in only 2 places, that's all he said
13:54:58  <peter1138> There's nothing wrong with the GC.
13:55:05  <m3henry> Have you tried using unique_ptr instead?
13:55:13  <peter1138> It's the last comment on your bug report.
13:55:30  <m3henry> Or perhaps something is dangling
13:55:44  <peter1138> What happens is the AI got replaced, but it tried to call the callback of the previous AI.
13:56:05  <Samu> ah, that's not the garbage collector crash
13:56:23  <peter1138> Why do you say that?
13:56:49  <Samu> it crashes in a different place
13:57:08  <peter1138> That's how garbage collectors work.
13:57:48  <peter1138> They collect garbage (unused objects) periodically, not constantly, therefore it will happen in a different place.
13:57:51  <Samu> it's separate from that report, unless you mean it's related
13:58:06  <peter1138> It's very likely related, yes.
13:58:20  <Samu>  i didn't force a reload ai, it just happened by itself when i was just watching
13:58:31  <peter1138> Could still happen if an AI dies and then another starts up.
13:58:48  <peter1138> I imagine it's "new" because previously AIs would not start immediately, now they can.
13:59:34  <peter1138> CcAI needs to check that the current AI instance is the same AI instance.
14:01:27  <Samu> the reload ai button was there since ever
14:01:47  <Samu> i doubt it's due to them starting immediately
14:02:02  <Samu> let me try crash in 1.8.0
14:02:05  <Samu> brb
14:04:53  *** octernion has joined #openttd
14:04:54  <Samu> funny, can't make it crash
14:06:56  <peter1138> 13:58 <@peter1138> I imagine it's "new" because previously AIs would not start immediately, now they can.
14:07:07  <peter1138> But you know...
14:07:12  <peter1138> Feel free to ignore me :-)
14:07:26  <Samu> but how come?
14:09:04  <peter1138> ...
14:09:12  <peter1138> https://github.com/OpenTTD/OpenTTD/pull/7151
14:09:14  <peter1138> ^^
14:09:59  <peter1138> Welcome to "unintended consequences".
14:10:02  <Samu> i know that, but still I don't get how it could be related. Reload AI button is per config slot
14:10:13  <peter1138> AIs can go bankrupt as well.
14:10:20  <peter1138> Then they are replaced, by themselves.
14:10:28  <peter1138> Well, not by themselves.
14:10:40  <Samu> have you seen what Reload AI does?
14:11:55  <peter1138> It kills off the AI, and then starts a new one. So?
14:12:59  <Samu> this is really strange for me, I can't see why it's related
14:13:14  <Samu> gonna test before 7151
14:13:50  <peter1138> Just pressing reload by itself won't cause an issue.
14:14:15  <peter1138> It's if you press reload just as the AI issued a command and would be expecting an answer for.
14:14:56  <peter1138> after 7151, this could also happen if start_date = 0 and a company goes bankrupt while issuing a command.
14:15:10  <peter1138> Which is how it could happen without pressing Reload AI.
14:18:00  *** Eddi|zuHause has quit IRC
14:18:18  <Samu> aha, got a crash before 7151
14:18:27  <Samu> well what now?
14:19:04  <peter1138> By pressing reload?
14:19:10  <Samu> yes
14:19:16  <peter1138> So still the same issue.
14:19:22  <peter1138> Likely.
14:19:35  <Samu> I rolled back to
14:20:00  <Samu> Commit fa53abe8
14:20:05  <peter1138> Don't focus on 7151, I only mentioned that as a reason why the issue could occur without pressing Reload ID.
14:20:19  <peter1138> I didn't mention it to blame it for causing the crash.
14:20:21  <Samu> but i can't make it happen on 1.8.0
14:20:33  <Samu> something between 1.8.0 and fa53abe8
14:21:59  <Samu> very strange, i'm trying the same steps in 1.8.0, no crash
14:23:08  <Samu> no matter how much I try, no crash, gonna give up
14:24:04  *** Eddi|zuHause has joined #openttd
14:29:05  <Samu> testing Commit 4703cd43
14:29:11  <Samu> wondering if it's AI Config related
14:29:22  <Samu> im always restarting random ais
14:30:28  <Samu> ah snap, can't build
14:30:40  <Samu> requires png library all the old library stuff
14:33:57  <Samu> i can use revert commit, i guess
14:34:08  <Samu> building
14:36:29  <Samu> nop, crash
14:36:44  <Samu> it's not that either
14:38:24  <Samu> what else could it be
14:38:40  <Samu> stuff that handles ticks?
14:43:21  *** Eddi|zuHause has quit IRC
14:43:48  *** Eddi|zuHause has joined #openttd
14:45:49  <planetmaker> can we have slightly bit of a live feed for each command executed on your console?
14:45:58  <planetmaker> +less
14:47:42  *** nielsm has joined #openttd
14:51:53  <LordAro> planetmaker: people have tried in vain for quite a while to make Samu less verbose
14:52:57  <Samu> :|
14:56:01  <Samu> i give up
14:56:15  <Samu> the issue is not originated by 7151
15:03:48  <Samu> glx provided fix, prevents the crash on the reload ai, but.. doesn't totally solve the problem from what I can gather, still gonna PR
15:05:04  *** keoz has joined #openttd
15:05:26  <DorpsGek_II> [OpenTTD/OpenTTD] SamuXarick opened pull request #7190: Fix #7188: AI instance crash when reloading AI in a server, and an AI… https://git.io/fh9jW
15:10:12  <peter1138> Samu, nobody said the issue originated in 7151
15:17:44  *** supermop_work has joined #openttd
15:18:18  <supermop_work> yo
15:18:44  *** Zeentch has quit IRC
15:19:04  *** supermop_work_ has joined #openttd
15:19:57  <DorpsGek_II> [OpenTTD/OpenTTD] PeterN commented on pull request #7190: Fix #7188: AI instance crash when reloading AI in a server, and an AI… https://git.io/fh9jy
15:23:07  *** octernion has quit IRC
15:26:22  *** supermop_work has quit IRC
15:27:12  <Samu> is there a unique identifier for instances?
15:27:21  <Samu> start date, start tick, something
15:29:57  <peter1138> I think it needs a network protocol change :/
15:31:20  *** octernion has joined #openttd
15:31:26  <peter1138> Well, probably not, I'm not really thinking about it at the moment.
15:33:34  <Samu> looking at garbage collector dude, for(SQUnsignedInteger i = 0; i < _stack.size(); i++) SQSharedState::MarkObject(_stack[i], chain);
15:33:40  <Samu> stack size = 1024, allocated = 1024
15:33:42  <Samu> it's full?
15:34:29  <Samu> meh, forget it
15:34:44  <peter1138> Yes, don't bother looking at the garbage collector.
15:36:00  <Samu> uhm, okay, but it crashed :|
15:36:02  <Samu> yesterday
15:36:13  <Samu> I know, it could be related to this reload ai stuff
15:36:40  <Samu> forget
15:36:52  <peter1138> The GC crashed because it was given bad information.
15:37:01  <peter1138> There's no issue with the GC itself.
15:37:43  <Samu> gonna try make garbage collector run every tick
15:37:56  <Samu> maybe i can find a way to crash it
15:40:55  <peter1138> You can crash it by giving it bad data.
15:41:59  <Samu> dont know which data was given, didn't pay much attention :(
15:42:16  <Samu> it was something in **chain
15:43:07  <peter1138> Seriously Samu, don't bother wasting your time on it.
15:43:42  <Samu> "access violation writting to "
15:43:49  <Samu> doing the MARK
15:44:15  <Samu> vms->Mark(&tchain);
15:44:44  <Samu> void SQVM::Mark(SQCollectable **chain) {
15:44:56  <Samu> crashed at the '{'
15:45:03  <Samu> which is a weird place for a crash
15:45:52  <Samu> as for what data it contained, I really have no idea
15:45:55  <DorpsGek_II> [OpenTTD/OpenTTD] nikolas commented on pull request #7086: Change #6173: Update SDL driver to use SDL 2.0 https://git.io/fhHet
15:48:17  <nielsm> yeah seriously, don't attempt to debug a virtual machine for a relatively complex language like squirrel, if you couldn't design and implement it yourself from the ground up
15:48:39  *** Wormnest has joined #openttd
15:49:10  <peter1138> Samu, it probably contained data about an AI instance that is no longer valid.
15:51:05  <Samu> that's why i'm forcing garbage collection every tick
15:51:13  <Samu> to see if i can reproduce it
15:51:37  <Samu> smashing that reload ai button
15:52:07  <peter1138> Cause and effect.
15:55:58  <Samu> can't trigger any crash
15:56:01  <Samu> oh well
15:56:06  <Samu> time to give up
15:56:23  <peter1138> Write an AI that sends a network command and expects a callback every tick.
15:57:29  <Samu> i wonder if it simply ran out of memory
15:57:30  <nielsm> if you can't trigger it repeatedly then it's likely related to memory layout or timing and likely a use-after-free bug
15:58:30  <nielsm> trigger it reliably *
15:58:33  <nielsm> (not repeatedly)
15:58:54  <Samu> hmm, gonna try the opposite
15:59:15  <Samu> instead of every tick, gonna try every year or so
16:01:47  <Samu> if ((AI::frame_counter & (DAY_TICKS * DAYS_IN_YEAR) == 0)) {
16:02:12  <nielsm> that looks strange
16:03:33  <Samu> oh right, the parenthesis in the bad place
16:03:42  <Samu> if ((AI::frame_counter & (DAY_TICKS * DAYS_IN_YEAR)) == 0) {
16:04:12  <nielsm> unless DAY_TICKS * DAYS_IN_YEAR happens to be a nice bitmask like 0x0FFF that's just a bad way of writing "once in a random while"
16:04:57  <Samu> it was & 255 originally
16:05:21  <nielsm> yes that's a nice bitmask
16:05:57  <nielsm> that works for triggering the condition every time the low byte is zero
16:06:02  <nielsm> i.e. once every 256 frames
16:06:45  <Samu> ah, I'm doing it wrong then
16:08:06  <nielsm> 74*365 == 27010 in decimal, or ‭0110100110000010‬ in binary
16:08:47  <Samu> 32767
16:08:52  <Samu> gonna use this
16:09:02  <nielsm> that would work
16:09:16  <nielsm> 0x7FFF
16:09:47  <Samu> alright, afk 30 min
16:09:55  <Samu> server running, waiting for a crash
16:13:09  *** Gabda has joined #openttd
16:18:08  *** HerzogDeXtEr has joined #openttd
16:19:06  <DorpsGek_II> [OpenTTD/OpenTTD] glx22 commented on pull request #7190: Fix #7188: AI instance crash when reloading AI in a server, and an AI… https://git.io/fhHvk
16:24:25  *** glx has joined #openttd
16:24:25  *** ChanServ sets mode: +v glx
16:24:46  <DorpsGek_II> [OpenTTD/OpenTTD] Gabda87 opened pull request #7191: Add #5654: Initializing graph GUI https://git.io/fhHvZ
16:26:00  <Gabda> hi!
16:27:15  <Gabda> does this count as issue necroing?
16:29:55  <glx> well if the issue is not fixed I guess it's ok
16:33:03  <nielsm> it's not like a closed issue means "this must never be fixed"
16:34:13  <Eddi|zuHause> especially not if it's a "andy closed this in a cleanup spree" ticket
16:34:38  <glx> same for stale bot closed issues
16:35:22  <Samu> no crashing yet
16:35:40  <nielsm> only if the discussion in the ticket leads up to a "this is definitely not a bug, actually intended" conclusion :)
16:36:04  *** synchris has joined #openttd
16:37:54  <Gabda> ok :)
16:39:30  <Samu> can't get any kind of crash, just reloaded ais and yet nothing
16:39:36  <Samu> oh well, time to give up?
16:43:29  <Samu> it's still july 1950, there was no time for any garbage collection call yet
16:44:59  <Samu> @calc 32767 / 74
16:44:59  <DorpsGek> Samu: 442.797297297
16:45:53  <Samu> @calc 443 / 30
16:45:54  <DorpsGek> Samu: 14.7666666667
16:46:06  <Samu> 15 months
16:50:10  <Samu> why isn't garbage collection called every tick?
16:50:14  <Samu> just wondering
16:50:46  <nielsm> because it tends to take a long time and the value of calling it too often is generally low
16:50:59  <glx> because it's useless to call it more often
16:51:42  <glx> it's called every 255 ticks, but only for 1 AI at a time I think
16:52:12  <nielsm> every 256 ai frames
16:52:23  <nielsm> ai frames may not be every tick, depending on difficulty setting
16:52:38  <glx> true
16:52:59  <nielsm> and the counter for ai frames begins when an ai is started, so every ai will have its gc cycle offset
16:53:43  <glx> I think the crash you got was just a bad luck when pressing restart
16:54:34  <Samu> it wasn't a restart, it was a thing on its own
16:55:13  * glx is trying to see if we can use args of the callbacks to check if it was our command
16:56:54  <glx> like on call the AI store cmd, tile, p1 and p2, then compare that when the callback happens
16:59:33  <Samu> studying the results originated from CompanyID cid = (CompanyID)GB(AI::frame_counter, 8, 4);
16:59:45  <Samu> first cid was 1
17:00:05  <Samu> shouldn't it be 0?
17:00:17  <Samu> gonna keep looking at it
17:00:27  <nielsm> ...what, why should the AI frame counter determine a company id?
17:00:31  *** Gustavo6046 has joined #openttd
17:01:03  <glx> it's just so we don't GC all AI at the same time
17:01:36  <glx> AI:frame_counter is shared with all AIs
17:02:02  <Samu> 256: cid = 1; 512: cid = 2; 768: cid = 3
17:02:07  <Samu> hmm
17:02:40  <nielsm> yes, that's how numbers work
17:03:03  <glx> and the modulo is 255
17:04:13  <glx> ah no it's not a modulo
17:05:02  <glx> but similar
17:06:53  <nielsm> https://0x0.st/zsDt.png  <- how numbers work
17:07:37  <Samu> i wonder what happens when it gets to 14
17:08:03  <nielsm> I'm sure the code will tell you
17:09:10  <glx> the code checks it's a valid AI id so nothing bad happens
17:09:25  <Samu> what about cid = 0 ?
17:09:37  <Samu> forgotten?
17:09:39  <glx> no
17:09:52  <glx> you forgot 0
17:10:21  <Samu> first frame was already = 1
17:10:25  <Samu> didn't start from 0
17:10:38  <nielsm> happens at frame 0x0000, 0x1000, 0x2000, etc
17:10:40  <glx> yes but cid will be 0 after 15
17:11:17  <glx> 4 bits go from 0 to 15
17:11:26  <glx> and restart
17:11:53  <Samu> aha, 0
17:11:56  <Samu> :)
17:12:34  <Samu> 15 is not a valid cid though, just pauses a bit longer
17:13:36  *** octernion has quit IRC
17:14:11  <Samu> if (((AI::frame_counter - 1)& 255) == 0) {
17:14:17  <Samu> maybe this? or not necessary?
17:14:24  <nielsm> makes no difference
17:14:29  <Samu> just so it would start at cid = 0
17:14:33  <nielsm> just runs it one frame earlier than it usually would
17:14:41  <nielsm> no
17:14:47  <nielsm> also why do you think this is a problem?
17:15:08  <Samu> not a problem, but hmm... nevermind, not a problem
17:15:45  <glx> and basically in single player 0 is not an AI anyway ;)
17:15:50  <nielsm> if you want to know when it runs GC, add in a DEBUG() line
17:16:09  <nielsm> if you want to force a gc cycle to run, hack in a console command to force one
17:18:41  <nielsm> and also keep in mind that squirrel itself will probably run a gc cycle on its own after a while
17:19:08  <nielsm> because that's what garbage collected languages like it do
17:21:11  *** supermop_work_ has quit IRC
17:26:37  *** octernion has joined #openttd
17:35:32  *** Progman has joined #openttd
17:35:32  <DorpsGek_II> [OpenTTD/OpenTTD] SamuXarick updated pull request #7190: Fix #7188: AI instance crash when reloading AI in a server, and an AI… https://git.io/fh9jW
17:38:56  *** Wormnest has quit IRC
17:41:30  <peter1138> I return.
17:43:22  <Samu> hi
17:43:30  <Samu> i need cargo_index
17:43:44  <Samu> can't split the function into 2 like you did
17:44:50  <Samu> or maybe i can
17:45:02  <Samu> will split a bit less
17:45:13  *** m3henry has quit IRC
17:45:38  <peter1138> glx, with the callbacks, it may be sufficient to check it at the command-level, based on company, rather than delving into the AI?
17:47:11  <glx> when the AI is restarted company is deleted and a new one is created
17:48:27  <glx> the commands know nothing about companies, only the index
17:48:34  <glx> I think
17:50:17  <peter1138> Yup, but you can say the same about the AI instance side, too.
17:50:23  <glx> for now I added cmd as callback args
17:50:59  <glx> so I need to store command args when the script calls and check that when handling the callback
17:51:17  <peter1138> But really it shouldn't be getting to the callback.
17:51:46  <glx> once the command is queued I don't know if we can do something
17:51:50  <peter1138> Hmm, I supose it depends if it's the same company but different AI instance, or different company.
17:52:11  <peter1138> I think a command from a company that got removed and then added as new should not get executed.
17:52:33  <glx> hard to check I think
17:52:54  <peter1138> I can think of a way but it'd be intrusive to the network protocol.
17:53:22  <peter1138> Not that it matters too much :)
17:53:35  <glx> at least the callback can do some safety checks to be sure it was its command
17:54:50  <Samu> give instance a unique name or so
17:55:13  <Samu> then compare the name ?
17:55:30  <peter1138> No
17:55:51  <peter1138> Map company ID to a unique ID within NetworkSendCommand
17:55:59  <peter1138> Then map it back on the recieving end.
17:56:07  <peter1138> If there is not mapping, reject it.
17:56:24  <peter1138> Actually it could still work with a byte value which is just incremented for each new company.
17:56:43  <peter1138> Then a new company with the same company->index would be a different unique ID
17:57:52  *** Eddi|zuHause has quit IRC
17:58:10  <glx> hmm should also work if a company is merged while sending a command and a new company is then created in the same slot
17:58:29  <glx> (very rare case but possible I guess)
17:58:33  <peter1138> *nod*
17:59:21  <glx> especially if the server is very slow
18:01:48  *** Eddi|zuHause has joined #openttd
18:19:08  *** Wolf01 has joined #openttd
18:19:14  <Wolf01> o/
18:28:02  *** m3henry has joined #openttd
18:32:07  <DorpsGek_II> [OpenTTD/OpenTTD] Gabda87 opened pull request #7192: Change: making the style of MakeVoid calls uniform https://git.io/fhHUg
18:33:13  <Gabda> is this kind of change is welcomed?
18:33:28  <Gabda> or I shouldn't bother if I see something like this?
18:34:16  <Gabda> (you can drop one "is" from my first question)
18:34:34  <peter1138> "y < MapMaxY()"
18:34:42  <peter1138> That means the function will be called for every iteration of the loop
18:34:53  <peter1138> Best not to make that change.
18:35:58  <peter1138> Although I see it's done elsewhere, so who knows :p
18:36:14  <Gabda> yes, I also saw it elsewhere
18:36:24  <Gabda> and I think the compiler optimizes it
18:36:26  <m3henry> Without -flto that call wouldn't be optimized too
18:36:31  <Gabda> but makes it more readable
18:37:01  <peter1138> m3henry, well it's inline
18:37:08  <Gabda> hmm, so the compiler does not optimize it by default?
18:37:09  <peter1138> static inline I mean.
18:37:41  <m3henry> oh It is in the same TU
18:37:44  <peter1138> Gabda, probably but...
18:38:01  <m3henry> Well then the compiler would be free to optimize it away if it things there's no aliasing
18:38:05  <m3henry> thinks
18:38:12  <peter1138> Gabda, even if the function is optimized away, it could still be the difference between a register compare and a memory compare.
18:38:42  <peter1138> Hmm
18:38:45  <m3henry> I would just store the value in a const variable
18:38:58  <m3henry> Then I don't need to care if the operation is expensive
18:39:45  <peter1138> glx, hmm, trying to work out how to synchronize my unique on new company creation.
18:39:52  <peter1138> *unique id.
18:39:57  *** gelignite has joined #openttd
18:40:15  <Gabda> I think it also can be a readability vs optimizing question
18:40:18  <peter1138> Oh, NetworkServerNewCompany, perhaps.
18:41:04  <m3henry> I would say that storing the value before entering the loop is more readable, because I know that the value does not change
18:41:13  <Gabda> the first gets better a little, the latter might be a little worse
18:41:29  <Gabda> I see
18:42:12  *** andythenorth has joined #openttd
18:42:16  <m3henry> int const maxX =  MapMaxX(); is easy to understand the effect
18:42:32  <andythenorth> yo
18:42:35  <m3henry> 'lo
18:42:39  <peter1138> I think we prefer const int :-)
18:42:54  <peter1138> norththeandy
18:43:31  <Gabda> ok, I'll rewrite them
18:43:44  <m3henry> I recently found out that if you read variable declarations backwards, then it reads as it would in english
18:44:03  <Gabda> my main concern was to make them uniform
18:44:12  <m3henry> So west-const became my standard
18:44:34  <Gabda> I do not insist any of the particular style
18:45:59  <m3henry> It can't work for function pointer declarations or array declarations
18:46:15  <m3henry> But it's better than nothing
18:51:21  <DorpsGek_II> [OpenTTD/OpenTTD] SamuXarick updated pull request #7184: Change: Distribute cargo to multiple stations or industries https://git.io/fh9lr
18:54:53  <glx> https://github.com/glx22/OpenTTD/commits/ccai_check <-- untested but it compiles fine :)
18:57:40  <andythenorth> one day a faster nml
18:58:10  <andythenorth> how about multi-grfs?
18:58:23  <andythenorth> appears as one grf to openttd, but is actually multiple grf files?
18:58:57  <peter1138> What
18:59:09  <peter1138> #include :/
18:59:17  <andythenorth> o_O
18:59:38  <andythenorth> then I could compile, e.g. one grf per vehicle
18:59:50  <DorpsGek_II> [OpenTTD/OpenTTD] Gabda87 updated pull request #7192: Change: making the style of MakeVoid calls uniform https://git.io/fhHUg
19:00:03  <andythenorth> which would be, perhaps 20x faster when a single vehicle changes out of 200
19:00:10  <andythenorth> I'm allowing an order of magnitude for overhead
19:01:03  <Gabda> I inserted your suggestions
19:01:51  *** supermop_work has joined #openttd
19:02:58  *** frosch123 has joined #openttd
19:03:11  *** supermop_work_ has joined #openttd
19:04:32  *** octernio_ has joined #openttd
19:06:46  <supermop_work_> yo
19:06:53  *** octernion has quit IRC
19:07:54  <Gabda> in case something like this: https://dev.azure.com/openttd/OpenTTD/_build/results?buildId=890 is it possible to restart the check, or I have to push a new version of the commits?
19:09:14  <nielsm> there is a restart button some people can push
19:09:53  *** supermop_work has quit IRC
19:10:20  <nielsm> there
19:11:00  <nielsm> ...maybe
19:12:31  *** Thedarkb-T60 has joined #openttd
19:15:22  <peter1138> Hmm, so client send command, server executes command, and then I guess sends it back to all the clients, right?
19:15:53  <nielsm> server validates command can execute, then executes it itself and tells everyone else to do the same thing at that tick
19:16:02  <nielsm> as far as I understand
19:22:33  *** debdog has quit IRC
19:22:42  <Gabda> nielsm: thanks
19:23:04  <andythenorth> ha ha
19:23:13  <andythenorth> I cut Horse compile time from 1 minute to 15 seconds
19:23:16  <andythenorth> much better
19:23:36  <nielsm> by doing something dumb and in retrospect obvious?
19:23:43  <andythenorth> yes
19:23:50  <andythenorth> I deleted 200 of the vehicles
19:23:55  <andythenorth> much faster now
19:23:55  <supermop_work_> HA
19:24:16  <peter1138> o_O
19:24:25  <andythenorth> I think I might rework it to be a minimal set, like Pikka's
19:24:31  <andythenorth> I bored of waiting for compiles
19:24:44  <andythenorth> 10 engines, 10 wagons
19:25:12  <andythenorth> or I do separate grfs
19:26:11  <andythenorth> 24 grfs
19:26:18  <andythenorth> Iron-Horse-Engines.grf
19:26:27  <andythenorth> Iron-Horse-Brake-Vans.grf
19:26:28  <andythenorth> etc
19:29:20  <peter1138> Why is it so slow?
19:29:38  <Samu> https://github.com/OpenTTD/OpenTTD/issues/6468 the fix I got partially fixes the issue
19:30:04  <andythenorth> script musa to upload them all
19:30:11  <andythenorth> peter1138: it's slow for multiple reasons
19:30:13  <Samu> this is the part I was unable to fix "It als shows that the latest version of the AI has been loaded instead but it didn't receive the savegame data because it's incompatible even though min version to load is 1"
19:30:17  <andythenorth> it's python
19:30:46  <andythenorth> it has some kind of massive ID resolution phase, for action 2 IDs etc
19:31:17  <andythenorth> it's single threaded
19:31:21  <andythenorth> there's no partial compiling
19:31:25  <andythenorth> it does have caches
19:32:38  <Samu> help me think. I save my AI which is version 7 but has a min load version of 2
19:32:54  <Samu> if I load it on a computer that only has version 6 of the AI
19:32:58  <Samu> what will happen?
19:33:26  <Samu> doesn't load the data, because it was saved as version 7?
19:33:41  <Samu> loads the data, because the min load version is 2?
19:35:11  <andythenorth> Horse makefile sample run time is 52s, of that 47s is spent in nmlc
19:35:33  <andythenorth> to compile 270 trains with a crapload of varaction 2
19:36:47  *** Thedarkb-T60 has quit IRC
19:37:25  <andythenorth> if I decompile/recompile the grf with grfcodec, the encode is 2 seconds
19:38:26  <andythenorth> https://dev.openttdcoop.org/projects/iron-horse/repository
19:44:26  *** Thedarkb-T60 has joined #openttd
19:50:40  <peter1138> Nice, got a crash on Reload AI...
19:50:53  <Samu> cg!
19:51:38  <Samu> who's a savegame versioning expert?
19:53:46  *** Gabda has quit IRC
19:54:24  <peter1138> Hmm.
19:58:30  <LordAro> @topic get 3
19:58:30  <DorpsGek> LordAro: Don't ask to ask, just ask
19:58:31  <LordAro> Samu: ^
19:58:49  <andythenorth> how will he know who to highlight otherwise :P
19:59:02  <andythenorth> Samu: broadly speaking, there are no experts
19:59:15  <peter1138> So I've queued up a command for a company that no longer exists.
19:59:31  <peter1138> Which means my code is on the right track, BUT, i'm doing the company -> unique_id mapping too late.
19:59:33  <LordAro> that seems inconvenient
20:01:53  *** Gja has joined #openttd
20:03:32  <peter1138> I could try checking that the company exists but that kinda defeats the point of the mapping.
20:04:13  *** debdog has joined #openttd
20:06:20  *** Gja has quit IRC
20:14:13  <DorpsGek_II> [OpenTTD/OpenTTD] LordAro requested changes for pull request #7192: Change: making the style of MakeVoid calls uniform https://git.io/fhHk4
20:16:57  <DorpsGek_II> [OpenTTD/OpenTTD] LordAro approved pull request #7191: Add #5654: Initializing graph GUI https://git.io/fhHkz
20:17:34  <DorpsGek_II> [OpenTTD/OpenTTD] LordAro merged pull request #7191: Add #5654: Initializing graph GUI https://git.io/fhHvZ
20:28:10  <DorpsGek_II> [OpenTTD/OpenTTD] LordAro updated pull request #7170: Update: Changelog https://git.io/fhSVe
20:28:16  <LordAro> arbitrary reminder for someone to review ^
20:28:26  <LordAro> i've bumped the date to sunday now :p
20:28:58  *** synchris has quit IRC
20:29:47  *** cHawk has quit IRC
20:30:51  <peter1138> Hi
20:37:10  <DorpsGek_II> [OpenTTD/OpenTTD] nielsmh approved pull request #7170: Update: Changelog https://git.io/fhHky
20:40:24  <DorpsGek_II> [OpenTTD/OpenTTD] nikolas commented on pull request #7170: Update: Changelog https://git.io/fhHkH
20:41:11  <DorpsGek_II> [OpenTTD/OpenTTD] Gabda87 commented on pull request #7192: Change: making the style of MakeVoid calls uniform https://git.io/fhHkQ
20:41:25  *** Gabda has joined #openttd
20:42:09  <LordAro> Gabda: yeah, like the old commit :)
20:43:18  <Gabda> ok :)
20:45:11  <Gabda> peter1138 and m3henry suggested that adding the variable might be a good idea, so I created a new version
20:45:28  <LordAro> hrm
20:45:53  <LordAro> peter1138: ^ thoughts on #7192?
20:45:54  <Gabda> but as there are different preferences, maybe you should talk about it
20:46:23  <Samu> a version 7 with a min version of 2 can't load on a version 6
20:46:53  <Samu> must understand why
20:47:33  <peter1138> I'd imagine because 7 > 6;
20:47:34  <DorpsGek_II> [OpenTTD/OpenTTD] nielsmh updated pull request #6965: Add: Option for population-linear town cargo generation https://git.io/fpkqa
20:48:15  <peter1138> LordAro, I didn't specifically request const, but I did say putting the function call inside the for () condition was maybe not so good.
20:48:30  <DorpsGek_II> [OpenTTD/OpenTTD] nielsmh commented on pull request #6965: Add: Option for population-linear town cargo generation https://git.io/fhHkp
20:48:49  <peter1138> But, I dunno.
20:51:11  * LordAro sees what godbolt says
20:52:01  *** cHawk has joined #openttd
20:55:29  <LordAro> https://godbolt.org/z/s3X7Qv -O2 optimises away very nicely
20:55:43  <LordAro> as does -O1, in fact
20:58:49  <Gabda> oh, it is a nice tool
20:59:09  <nielsm> modern compilers are pretty good at simplifying expressions also involving many layers of (inline) functions and more
21:00:19  <peter1138> So it already loads it into a local variable.
21:00:22  <peter1138> Er, register, I mean.
21:02:12  <peter1138> I like that when MakeVoid is a NOP it's just... nothign :p
21:03:48  <peter1138> Gabda, so apologies, I was talking bollocks :p
21:04:32  <Gabda> no problem, it wasn't much work, and we learned something in return :)
21:05:37  <Gabda> I'll push the first commit back tomorrow (with the changed commit msg), but I have to go now
21:05:42  <Gabda> bye everyone!
21:05:48  *** Gabda has quit IRC
21:06:18  *** Progman has quit IRC
21:06:41  <nielsm> okay, I just looked ath that BitpackedUint template thing I wrote the other day again
21:06:51  <nielsm> both gcc and clang optimize it nicely
21:06:55  <nielsm> microsoft less so
21:07:08  <nielsm> in fact it's pretty terrible
21:07:46  <peter1138> Oh
21:08:49  <peter1138> MSVC is pretty terrible for LordAro's example too.
21:09:38  <LordAro> it's not great, it has to be said
21:09:45  *** octernion has joined #openttd
21:09:51  <LordAro> even when adding /Ob /Og
21:10:26  <peter1138> Seems to be ignoring all the inlines, as it's allowed.
21:10:53  <nielsm> https://godbolt.org/z/wGL6Z1
21:11:20  <LordAro> even adding __forceinline does nothing
21:11:50  *** sla_ro|master has quit IRC
21:11:57  <LordAro> wait hang on, is it just that it's not optimising the functions away, so it looks bigger?
21:12:42  <nielsm> yeah in your example it's leaving in the functions
21:12:46  *** octernio_ has quit IRC
21:12:50  <nielsm> but optimizing the actual main()
21:13:05  <LordAro> looks like the loop is still there though
21:13:24  <LordAro> wait, of course it is
21:13:45  <LordAro> yeah, looks much the same as gcc
21:17:33  <peter1138> clang goes weird.
21:18:22  <LordAro> oh, that's weird
21:18:27  <LordAro> has it tried to unroll the loop?
21:19:13  <LordAro> no, something to do with the volatile variable
21:19:41  <LordAro> if i change it to an extern variable, it behaves much better
21:29:09  <DorpsGek_II> [OpenTTD/OpenTTD] SamuXarick opened pull request #7193: Fix #6468: Load correct version of AI as specified during the time of its save. https://git.io/fhHI1
21:29:24  <Samu> inb4 rejected
21:31:01  *** gelignite has quit IRC
21:33:13  <andythenorth> bananas cert outdated?
21:33:23  <LordAro> uh oh
21:33:49  <LordAro> no? bananas.openttd.org doesn't have https
21:34:34  <LordAro> wait, yes it does, chrome is hiding it from me
21:34:41  <m3henry> Is there pointer aliasing going on?
21:39:08  <dwfreed> andythenorth: "Not Valid After: Wednesday, November 27, 2019 at 18:59:59 Eastern Standard Time"
21:39:17  <dwfreed> cert is valid for *.openttd.org
21:56:31  <DorpsGek_II> [OpenTTD/OpenTTD] LordAro dismissed a review for pull request #7170: Update: Changelog https://git.io/fhHky
21:56:32  <DorpsGek_II> [OpenTTD/OpenTTD] LordAro updated pull request #7170: Update: Changelog https://git.io/fhSVe
21:57:19  *** nielsm has quit IRC
21:59:30  *** octernion has quit IRC
22:00:15  *** frosch123 has quit IRC
22:01:48  *** octernion has joined #openttd
22:03:37  <peter1138> White stilton with mango and ginger.
22:03:42  <peter1138> Not really proper cheese, is it?
22:03:52  <LordAro> bit poncy
22:04:29  <peter1138> https://www.openttd.org/en/download-ratt
22:04:36  <peter1138> Oh... there were some builds, apparently.
22:05:14  <peter1138> We should just go with it an add NRT for 1.9 :p
22:05:34  <peter1138> Then a week later release 1.9.1 with some of the bugs fixed.
22:05:39  <andythenorth> :P
22:05:46  <LordAro> :o
22:05:51  <andythenorth> loads of builds
22:05:54  <andythenorth> loads of grfs
22:05:56  <peter1138> I'm kinda not joking.
22:05:58  <LordAro> well we've not reached feature freeze yet
22:06:07  <peter1138> We put off massive features and it just gets... never done.
22:07:10  * peter1138 rebases it
22:08:52  <Samu> there are differences between ai_sl.cpp and game_sl.cpp
22:10:05  <peter1138> It builds, ship it!
22:10:15  <Samu> gonna try fix this https://github.com/OpenTTD/OpenTTD/issues/7131
22:10:23  *** Wolf01 has quit IRC
22:10:45  <andythenorth> it has been more widely play tested than normal
22:11:00  <andythenorth> there was no NoAI or NoGo support iirc though
22:11:49  <Samu> btw I found a way to detect if a GS is active in scenario editor without resorting to my ai gui stuff
22:11:56  <Samu> ai debug window
22:12:05  <Samu> how could I forget
22:12:30  <peter1138> Hmm.
22:12:47  <supermop_work_> peter1138: if you don't put it in 1.9, when will it go in
22:12:47  <Samu> the big Game Script rectangular button is not grayed out if it's active, and it is if it's not
22:12:57  <peter1138> They do build road vehicles at least :p
22:13:05  <andythenorth> it will go in 2.0
22:13:08  <peter1138> Did AIs ever build trams?
22:13:10  <andythenorth> otherwise known as 10.10
22:13:14  <peter1138> 1.10
22:13:23  <andythenorth> oops too many 0
22:14:26  <andythenorth> at least nrt has nml support :)
22:14:41  <supermop_work_> i just mean, people have been messing about with NRT since before 1.8
22:14:43  <andythenorth> not merged but eh
22:14:44  <peter1138> Ok, they build tramlines too.
22:14:56  <peter1138> Not efficiently, mind.
22:15:11  <peter1138> No trams on it, haha
22:15:27  <supermop_work_> and it works pretty ok, most of the 'problems' seem to be philosophical differences as to what NRT might do
22:15:55  <supermop_work_> but without it in, idk if you will get a better critical mass of testing than you do now
22:16:15  <peter1138> ^^
22:16:30  <supermop_work_> at least, i am certainly not motivated to do more nrt grf work for the past year-ish
22:17:57  <peter1138> Hmm, no notification.
22:18:39  <Samu> loading a scenario is loaded as if it was a savegame
22:18:47  <Samu> is there a distinction?
22:18:55  <peter1138> No, they are the same.
22:19:04  <Samu> ok, that's the problem
22:19:12  <m3henry> What would count as a big enough change to make 2.0?
22:19:46  *** andythenorth is now known as Guest479
22:19:46  *** andythenorth has joined #openttd
22:19:57  <Samu> or maybe the problem is during save
22:19:59  <LordAro> i'm not sure anyone knows
22:20:02  <Samu> have to investigate this
22:20:31  <andythenorth> stick nrt in the RC, revert if fail?
22:20:35  <andythenorth> or just fix?
22:20:37  <m3henry> Probably best to go with 1.10 then
22:20:44  <andythenorth> it's not like we force upgrades on people
22:21:22  <LordAro> depends how badly it fails, i imagine
22:21:51  <m3henry> lol
22:22:38  <peter1138> Lots of subtle things are touched.
22:23:35  <DorpsGek_II> [OpenTTD/OpenTTD] PeterN updated pull request #6811: Feature: Add NotRoadTypes (NRT)  https://git.io/vhlfg
22:23:43  <peter1138> That took you a while...
22:23:49  <DorpsGek_II> [OpenTTD/OpenTTD] PeterN dismissed a review for pull request #6811: Feature: Add NotRoadTypes (NRT)  https://git.io/fh305
22:26:04  <DorpsGek_II> [OpenTTD/OpenTTD] M3Henry commented on issue #7125: Convert singleplayer game to multiplayer server https://git.io/fhHL0
22:26:14  *** Guest479 has quit IRC
22:27:06  <DorpsGek_II> [OpenTTD/OpenTTD] PeterN commented on issue #7125: Convert singleplayer game to multiplayer server https://git.io/fhHLu
22:27:48  <peter1138> If it add it to beta1, we'd get loads of testing.
22:27:54  <peter1138> And mostly no bug reports, but still.
22:30:32  <peter1138> docs/landscape.html is wrong.
22:31:13  <peter1138> Apparently I never updated the docs when I did the 16 -> 64 change.
22:33:27  <andythenorth> :P
22:33:30  * andythenorth bed
22:33:32  *** andythenorth has quit IRC
22:34:21  <Samu> launching scenario editor does it correctly
22:34:33  <Samu> loading a scenario does it wrong
22:34:42  <Samu> hmm
22:41:36  <m3henry> Can't believe I hadn't thought until now to do a dist upgrade
22:45:47  <Samu> SM_EDITOR versus SM_LOAD_SCENARIO
22:53:34  *** Thedarkb-T60 has quit IRC
23:00:16  <Samu> nop
23:00:36  <Samu> there is no stopping a GS from starting
23:03:01  <Samu> AI: https://github.com/OpenTTD/OpenTTD/blob/master/src/saveload/ai_sl.cpp#L111
23:03:07  <Samu> GS: https://github.com/OpenTTD/OpenTTD/blob/master/src/saveload/game_sl.cpp#L103
23:03:24  <Samu> GS needs something similar to what's in the AI
23:03:52  <Samu> or else, scenario editor will always load and activate GS
23:04:14  <Samu> how to solve
23:08:02  <Samu> IsValidOwnerDeity
23:09:50  *** snail_UES_ has joined #openttd
23:11:04  *** keoz has quit IRC
23:12:31  *** octernion has quit IRC
23:12:58  *** Thedarkb-T60 has joined #openttd
23:18:51  *** supermop_work_ has quit IRC
23:23:28  <guru3> what months does property maintenance come due?
23:23:40  <Samu> monthly
23:23:47  <guru3> nuts
23:24:45  <Samu> can't treat OWNER_DEITY as a company
23:24:47  <guru3> also thanks
23:24:58  <Samu> what can I do:(
23:27:21  *** HerzogDeXtEr has quit IRC
23:46:50  <peter1138> Hmm, why do we need to introduce electrified road and non-electified trams
23:49:43  <Samu> because
23:49:49  <Samu> no idea
23:56:09  *** m3henry has quit IRC

Powered by YARRSTE version: svn-trunk