01:22:02 Experimental (bcrawl) branch on underhound.eu updated to: 0.23-a0-2347-g4f414a2140 01:34:37 is there no way to throttle the crawl processes themselves? with e.g. cgroups 01:36:18 it'd require per-server setup, but would handle all versions and all ways to cause lag 01:43:19 -!- amalloy_ is now known as amalloy 03:15:50 -!- amalloy is now known as amalloy_ 03:30:49 Fork (bcrawl) on crawl.kelbi.org updated to: 0.23-a0-2347-g4f414a2140 07:30:23 aidanh yes, that would be ideal, but getting "per-server setup" to consistently happen is ... not easy 07:30:48 it took like a month to install one python package 07:30:53 heh, yeah, fair point 07:31:21 (one reason why I've been wondering about a better way for devteam members to communicate with server admins) 07:32:08 unless someone is really determined, an admin who is paying attention can probably just ban most troublemakers 07:33:50 and if someone *is* really determined, I expect our all-volunteer mostly 5-20yo infrastructure is pretty doomed regardless of what we do 07:34:10 this is why I didn't commit anything at all for the apocalypse stuff, despite spending several hours working on it 07:36:16 that's reasonable, yeah 07:37:22 I was thinking about some sort of unified rebuild page after unleasing that latest wave of crashes 07:37:57 dev sso? :-) 07:38:05 in general I'd like to improve the "admin panel" such as it is 07:38:58 wishlist includes admin-triggered web-based save backup 07:39:42 I wonder how I can actually test this py2019 branch 07:39:53 just rolling it out seems ... unwise 07:41:55 something of the sort, yeah 07:42:19 it's a bit more work, but you could add some type annotations and run it through mypy 07:42:46 should catch any bytes/str mixups still lurking 07:43:21 yeah, maybe 07:43:37 right now the code works as-is in py27 07:44:08 tornado 6 is fully annotated though 07:49:44 well, that ended quickly: /Users/advil/anaconda3/lib/python3.7/site-packages/tornado/ioloop.py: error: INTERNAL ERROR -- please report a bug at https://github.com/python/mypy/issues version: 0.660 07:50:53 welp 07:51:34 odd because tornado explicitly is supposed to support mypy, maybe I have the wrong version of something 07:56:47 yeah, anaconda installed some old version of a dep for some reason 07:57:07 huh, I just now realized that the webserver completely lacks a requirements.txt or any other form of dependency version control 08:45:28 03advil02 07[py2019] * 0.24-a0-616-gc6e2fbf: Webtiles: minimal type annotations to pass static type checking 10(5 minutes ago, 6 files, 27+ 6-) 13https://github.com/crawl/crawl/commit/c6e2fbf42fcd 09:22:24 Stable (0.22) branch on underhound.eu updated to: 0.22.1-59-ge965b3aba3 09:40:54 The build has errored. (py2019 - c6e2fbf #11881 : advil): https://travis-ci.org/crawl/crawl/builds/584123952 09:54:57 03advil02 07[py2019] * 0.24-a0-617-gb518322: Webtiles: static type annotations for low-level messaging 10(80 seconds ago, 3 files, 55+ 42-) 13https://github.com/crawl/crawl/commit/b51832213d7b 09:57:19 advil: I seem to remember seeing you express intent to refactor / otherwise improve the hud code, is that still the case? 09:59:08 I'm looking at refactoring the remaining UI code and ripping out most of the cgotoxy hell 09:59:35 I've thought about it from time to time but haven't worked on anything there recently 10:14:03 alright, no worries; was really just wondering if you had anything more creative in mind, design-wise 10:33:15 not really 10:33:33 I'm usually a bit more incremental than you so I probably would have started going piece by piece first 10:34:35 just keep in mind that that code is called a really, really large # of times right now 10:35:19 probably would have started with that stupid bar class 10:57:29 and also tried to figure out why some hud ui elements (but not most) display at various loading/game startup times 11:10:15 heh, colour_bar? yeah that one's a marvel 11:11:22 my favourite is probably the state machine that munges the cgotoxy coords for the small hud layout 11:12:17 well, the some but not most is presumably due to the hud only redrawing dirty parts of the ui 11:13:06 my plan to fix this (and all the other weird drawing issues) is to redraw everything just once, just before blocking for the next keypress 11:13:44 apart from animations and flashes and what not, which should also just redraw everything 11:22:47 Stable (0.23) branch on underhound.eu updated to: 0.23.1-89-g277498a001 12:24:42 visual glitch in slime 13https://crawl.develz.org/mantis/view.php?id=12064 by Artagas 13:05:39 Unstable branch on crawl.akrasiac.org updated to: 0.24-a0-614-geaf2f25 (34) 13:27:23 -!- amalloy_ is now known as amalloy 13:42:39 03Aidan Holm02 07* 0.24-a0-615-g751f86b: Fix webtiles rendering using outdated map_knowledge (Artagas, 12064) 10(3 minutes ago, 1 file, 10+ 0-) 13https://github.com/crawl/crawl/commit/751f86b5a9be 13:48:16 Unstable branch on crawl.kelbi.org updated to: 0.24-a0-615-g751f86b5a9 (34) 14:05:29 aidanh: by the way, will this at all fix the issue where if you have parts of your doll tile that extend into the next cell, as you move the "overlap" is retained in the drawing of those cells? 14:05:54 is that a webtiles bug? I've never seen it 14:05:59 I don't know how to describe that using more correct language, but there's a kind of ghosting effect if e.g. your shield extends too far to the right 14:06:04 yes, I think it's webtiles only 14:06:38 you'll see little slivers of your shield left behind in the cell rendering as you move 14:06:56 could likewise happen with a weapon, but it's most common with shields 14:07:33 no, likely not; iirc webtiles uses a canvas, and repaints cells into that, so it'll remain there until the next repaint of the adjacent cell 14:08:03 right 14:08:26 this would affect shields carried by monsters too, correct? 14:08:35 hrm, not sure I've seen that 14:09:05 it most often happens with custom player tiles, since the correct location for a shield or weapon for those tiles is not so close to the center of the tile 14:09:43 and I guess often it's when using equipment that the original monster wouldn't use 14:09:43 so a monster that doesn't normally use a shield gets used as a player tile 14:10:01 but the "right" location for the shield that we put in has it much further right due to where the monster's hand is 14:10:14 right, that makes sense 14:11:04 it'd be possible to just always redraw the tiles around the player's old position; that'd probably be simplest 14:12:39 is there any monster tile where this effect is particularly noticable? 14:13:00 well, you can just use the options in tile_player_tile to change the weapon/shield offset yourself 14:13:06 and could see this with any tile 14:13:08 ??options 14:13:08 rcfile[1/4]: https://github.com/crawl/crawl/blob/master/crawl-ref/docs/options_guide.txt 14:13:20 ah, sorry 14:13:29 it's tile_shield_offsets (and tile_weapon_offsets) 14:14:39 use any custom tile with tile_player_tile and use one of those options with a large enough x value (in the case of tile_shield_offsets) 14:15:04 ah, alright, so it's not something that could be avoided just by adjusting the artwork and offsets 14:15:15 yeah, we do have default offsets specified for a bunch of tiles 14:15:24 but those offsets can be enough to trigger this 14:15:33 because the monsters hand might just be too far to the right side 14:16:00 I wonder if it's something you could only do conditionally 14:16:07 like if they were using a custom tile 14:17:41 on the webtiles side, it'd be possible to detect overflow; not sure what you'd do after that though 14:20:26 i guess cache the drawing instructions for each cell; then if a cell X was overdrawn previously by neighbour Y, and Y is queued for redraw, redraw X as well using the cached instructions 14:22:46 alternatively, we could render each cell into a 32x32 canvas, then composite them all into the view region after updating dirty cells 14:23:08 that basically emulates how local tiles works, but it'd double memory usage 14:58:17 when drawing a cell you could clip the drawable region to only the area that cell is supposed to be able to draw into, right? solve the problem by preventing overflow 15:06:07 sounds like you're proposing to render the cell incorrectly 15:06:29 it ideally would show the bit of the shield over on the next tile 15:08:02 i mean, is that correct? it's cool when there's nothing over there but floor, but what if my cell wants to spill onto an adjacent cell, and that cell also wants to spill over onto my cell? 15:09:03 I suppose there would be a priority involved 15:09:05 i'm definitely not a graphics expert, it just sounded to me like since we (as i gather from this conversation) don't correctly handle overflow, the system is sorta designed to not have overflow 15:09:11 render the player stuff over the monster stuff 15:09:26 so e.g. your shield bit would override a bit of the monster/feature (potentially) 15:09:53 but the reverse situation would have your player tile render over any intruding stuff in your cell 15:10:51 it's certainly simpler to just truncate things universally, but that would be the solution that looked the least good, I think 15:11:45 maybe if the technical issues are too much of a pain, simply not rendering anything that would be outside of the cell is the best solution 15:48:54 hm, how does webtiles code handle tall monster tiles then? that seems like it would have a similar issue 15:54:11 -!- amalloy is now known as amalloy_ 16:09:33 yeah, I was about to mention that, but likewise not sure if that causes problems 16:19:45 if you use one of those as your player tile, any monster in a cell above you seems to override the portion of your tile that would otherwise render there 16:20:00 floor tiles don't override it, but any monster does 17:03:00 -!- Tiobot is now known as Guest5651 17:53:47 -!- amalloy_ is now known as amalloy 18:22:53 Unstable branch on underhound.eu updated to: 0.24-a0-615-g751f86b5a9 (34) 19:06:48 latenightsnack (L1 VpEn) ASSERT(crawl_state.is_replaying_keys()) in 'main.cc' at line 2622 failed. (D:1) 19:09:15 ^ I hope that isn't related to yesterday's fix for resting forever 19:14:37 ^ I think it is; I just got done building with USE_DGAMELAUNCH=yes and if I then try and rest 100000 turns, it rests 100 then crashes with the same assertion 19:22:14 https://crawl.kelbi.org/crawl/ttyrec/latenightsnack/ shows one attempt to futz things up by macroing 'a' to 555555555(etc); one short game that attempts to repeat 3 commands forever, not clear which, then gets the assertion failure on the last one 19:24:13 Ah. The result of the patch is that you just can't '5' forever, but you can produce the assertion failure by trying to '.' forever. 19:25:07 why does this c++ construction print "" rather than "fire"? Is it somethinga bout variable scoping? http://dpaste.com/3NDB61J 19:28:08 er, what is the value of condition? 19:28:25 sorry, that's a simplified example. the expected code path is running 19:28:51 or is it... 19:29:20 it is 19:29:28 adviltest (L1 HOFi) ASSERT(crawl_state.is_replaying_keys()) in 'main.cc' at line 2622 failed. (D:1) 19:30:03 advil: I infer you're aware, then. :-/ 19:30:35 cko is being attacked right now using this method 19:31:16 there's not much i can do about it right now 19:31:16 oh... it isn't 19:31:39 floraline: which method? 19:31:40 floraline: :( good luck 19:31:43 these crashes appear to be from game sessions i'm terminating 19:31:48 using hup 19:31:50 ah 19:32:00 well the "adviltest" game wasn't an attack :-) 19:32:04 i figured :p 19:32:32 And latenightsnack seems to be a breaching experiment ran into the same bug I found 19:32:32 looks like it's just one user, they've been doing it for about an hour now 19:33:26 advil: It's the mpr("Throttling repeat for the sake of the server..."); that causes the assertion failure 19:34:42 oh, to be clear i did not terminate adviltest 19:34:49 you crashed that on your own 19:35:45 without cgroups in place or something like it, there is nothing i can do about this type of attack 19:44:59 Does the one that macro-ed 'a' to '555555 ...' work, or is it dependent on using '0' to repeat commands? 20:03:24 -!- amalloy is now known as amalloy_ 20:08:09 -!- amalloy_ is now known as amalloy 20:08:58 the crash must be webtiles specific, I only tested in console 20:09:13 I'm not really at my computer right now :- 20:09:14 / 20:09:31 advil: I don't want to be Captain Obvious but to produce it you need to have USE_DGAMELAUNCH=yes 20:09:40 I did indeed test that ;-) 20:09:53 Odd - I was in console 20:11:14 (The Captain Obvious bit is because first I didn't do that and ofc the patch did nothing at all) 20:11:40 when I committed I actually tested without the #ifdefs so it's conceivable there's some interaction 20:23:36 It's down to state.cc - // If command repetition is being used to imitate the rest command, 20:24:29 That causes the mpr("Throttling repeat ...") to crawl_state.cancel_cmd_repeat("Command repetition interrupted."); if the repeated command was '.', CMD_WAIT 20:26:03 And if the state changes there, there's an assertion failure, because crawl_state.is_repeating_cmd() isn't meant to be able to change _inside_ the "for (; i < count && crawl_state.is_repeating_cmd(); ++i)" loop in main.cc 20:26:31 So I guess maybe you did 0 1000 5, but not 0 1000 . 20:26:59 And the assertion from Kelbell here was from the ttyrec where the malicious user is testing having found 0 1000 5 doesn't work anymore. 20:29:23 I submit what's needed is a more general slowdown when many turns have gone by without any messages being printed, which would catch the approach in the later ttyrec of macroing something to invoke '5' many times. 20:30:59 Apologies for my confusion between CMD_REST and CMD_WAIT above 22:18:36 -!- Amnesiac_ is now known as Amnesiac 22:23:51 hm yeah I tested with breadswinging, not . 22:25:30 seems to only crash for . 22:26:03 03advil02 07* 0.24-a0-616-ge2a249a: Remove throttling notification 10(64 seconds ago, 1 file, 0+ 2-) 13https://github.com/crawl/crawl/commit/e2a249a6fdac 22:26:19 not super thrilled about some kind of griefer arms race? 22:26:39 a general throttling mechanism would be nice, but it's kind of hard to get right 22:27:26 !crashlog latenightsnack 22:27:27 1. latenightsnack, XL1 VpEn, T:100 (milestone): https://crawl.kelbi.org/crawl/morgue/latenightsnack/crash-latenightsnack-20190912-230639.txt 22:31:52 I wonder how it would impact things to always sleep for some short time in any repeat loop, that way at least it wouldn't be a tight loop 22:32:07 in my testing with one process it didn't change cpu much, but it might help if there are many competing processes 22:32:52 Unstable branch on crawl.kelbi.org updated to: 0.24-a0-616-ge2a249a6fd (34) 22:39:54 I'll think a bit about the general throttling mechanism and send a pull request if I have a sudden fit of enthusiasm 22:42:24 one general issue is that I was worried about doing things that might impact rt speedrunners 22:44:36 I think the proposal I have wouldn't because why in a speedrun (in any normal play) would you see many turns pass with no messages being printed (or attempt to be printed but be suppressed by .crawlrc, etc) 23:18:01 code that lets crawl nice itself if it thinks it is ddossing 23:34:00 FR: make each skill in skill menu always have its own letter (when you get new skills available due to picking new weapon or learning a spell, their letters slide), so that one could open the menu and change active skills without pause. E.g. you decide to direct all experience towards Throwing: instead of opening menu and looking for Throwing skill letter you just press 'm', shift-'h', 'Esc' with no pauses in-between. 23:34:15 Problem: there are more than 27 skills (and shift-letter have its own function). Solution: trim the number of skills to 27. 23:34:50 Ugh, we have 26 letters. 23:41:57 The FR is serious, problem and solution - half-joke. Right now when you drink !exp last skills in menu are managed with digit keys (but they lose shift-letter functionality, which would be nice to enable somehow). Trimming number of skills to 27 is just another FR, whose only goal is flavour; it's seems unrealistic though.