00:01:06 <int-e> (the corresponding code is no longer in ghc's head, beautiful)
00:08:18 <int-e> Anyway. To call back into Haskell from C, the RTS creates a trampoline, and wraps the pointer to it into some heap object with a finalizer that is supposed to free the trampoline; that's freeHaskellFunctionPtr. As a plausibility check, that verifies that the first few bytes of the code match the generated trampolines. This check is failing.
00:08:24 <int-e> Smells like memory corruption?
00:13:17 <int-e> Let me find a link: https://github.com/ghc/ghc/blob/eeead9fc9bdb5e1add09a9c3aa40df9a77d9eac3/rts/adjustor/NativeAmd64.c#L327-L351
00:13:18 <fizzie> I guess it's borderline possible some library it links dynamically to has made some sort of non-ABI-compatible change.
00:14:03 <int-e> (not that it will help much)
00:14:06 <fizzie> (Judging from the file name, this was built with ghc-8.8.4, which was a while ago.)
00:14:52 <esolangs> [[User:Hotcrystal0/Signature]] https://esolangs.org/w/index.php?diff=170758&oldid=170649 * Hotcrystal0 * (+201)
00:15:31 <int-e> ./burlesque +RTS --info might tell you
00:15:48 <int-e> (or whatever the name is)
00:16:00 <fizzie> ,("GHC version", "8.8.4")
00:17:55 <int-e> if you want to try rebuilding it you might find https://int-e.eu/~bf3/tmp/blsq.patch helpful
00:18:18 <int-e> (because manually chasing dependencies is a pain)
00:18:32 <b_jonas> memory corruption in glue code to expose a closure as a C function pointer without extra arguments? how jolly
00:19:28 <b_jonas> does the haskell FFI have a way to avoid this, by exposing closures as an explicit pair so the caller passes an argument and you can avoid the trampoline?
00:21:12 <sorear> Note that the value printed is supposed to be a *page* pointer, the fact that it doesn't end with 000 seems to indicate the pointer itself is corrupt
00:22:00 <fizzie> int-e: Thanks! Looks like I'd actually made https://0x0.st/onqe.cabal back when originally building it for myself in the "I don't know what I'm doing but it made it build" way. Will have to give rebuilding it a try when I get back to it.
00:23:54 <sorear> breakpoint on errorBelch and try to get a backtrace, maybe
00:24:18 <int-e> hope it works in `rr` so you can easily find the places that last modified it
00:25:19 <int-e> fizzie: Hah, you actually picked a meaningful version.
00:25:41 <fizzie> Can't right now, but just in case y'all want to keep on guessing, here's another observation: the pointer value it prints keeps steadily decreasing, every time by 40 bytes: https://0x0.st/Prvv.txt
00:25:47 <sorear> the offending value is a register, not memory, rr might help if the backtrace shows it was loaded from memory
00:26:10 <int-e> sorear: it dereferences that pointer, no?
00:26:44 <int-e> sorear: but right since you're saying that the pointer itself is corrupted
00:28:01 <sorear> 7ff... looks like a pointer into the stack, trying to free a local variable instead of what it points to while recursing with 40 byte frames?
00:29:41 <fizzie> 0x7ff24f42cfa8 (it's ASLR, so it's a new one) is in the mapping 7ff24f42c000-7ff24f42d000 r-xp 0000a000 00:1c 231402 /usr/lib/x86_64-linux-gnu/libffi.so.8.2.0
00:30:16 <fizzie> So not stack but code (r-xp) of a dynamically loaded library.
00:31:09 <int-e> Uh... why would this code be used if it's using libffi?
00:32:18 <fizzie> Dunno, but I do seem to have recently updated the libffi package on this system, so I imagine that's the immediate trigger for it now misbehaving.
00:32:20 <sorear> probably something in the dependencies is messed up so it's trying to use and not use libffi simultaneously
00:32:53 <int-e> Or maybe it used to get lucky and libffi trampolines looked that way, and now that stopped being the case?
00:33:50 <fizzie> (The changelog for the new version also mentions what changed was "Stop building with --disable-exec-static-tramp", which sounds quite trampoliney.)
00:34:09 <int-e> It's also funny that `grep -r ' guv'` finds *only* these adjustor related errors.
00:34:20 <sorear> ghc or libffi changelog?
00:36:20 <fizzie> (I haven't rebuilt the binary since 2020, and I don't _think_ any GHC runtime stuff gets linked to it dynamically, at least looking at ldd output.)
00:38:15 <int-e> IIUC this is the code that is supposed to be used when libffi is used for trampolines: https://github.com/ghc/ghc/blob/ghc-8.8/rts/Adjustor.c#L97-L111 ...note the absence of calling people 'guv'.
00:38:49 <int-e> I wanted https://github.com/ghc/ghc/blob/ghc-8.8.4-release/rts/Adjustor.c#L97-L111 (the release tag, not the branch) but the code is the same.
00:39:11 <fizzie> (UK, Ireland, chiefly London, informal) A form of address to a man, usually a stranger or a superior.
00:40:12 <fizzie> guv'nor: (UK, Ireland) An informal form of address to a man; see guv. This version is especially likely to be applied to the owner of a business or the landlord of a public house.
00:40:31 <int-e> Anyway. I don't have the whole story for this. There may be a hybrid scenario where libffi is used for some things and not for others.
00:40:51 <fizzie> Just to be clear, none of you need to continue thinking about this if you don't want to. :)
00:40:56 <int-e> And a bug that causes that old GHC runtime to confuse them.
00:41:05 <sorear> libffi static trampolines are 40 bytes on x86_64 without ENDBR so that's probably related
00:41:18 <int-e> fizzie: I am about done. :)
00:42:20 <int-e> fizzie: Because while it's fun to dig, there's little point in actually debugging a 5+ year old GHC version
00:43:07 <int-e> I will say that libffi changing what its trampolines look like sounds more palatable than manifesting a sudden memory corruption.
00:45:25 <int-e> b_jonas: Anyway, no I don't believe that there's a fat pointer alternative to those trampolines.
00:49:02 <int-e> fizzie: actually debugging would involve fun side quests like figuring out whether the ghc was a vanilla one or somehow patched by a distributor :)
00:53:17 <int-e> fizzie: FWIW the GHC version I used to build Burlesque recently is 9.10.3. So a slight bit behind. (But also way ahead of, say, Debian)
00:54:05 <int-e> I don't know whether 9.12 would break; I simply didn't try.
01:22:46 -!- pool9 has joined.
01:23:52 -!- pool9 has quit (Read error: Connection reset by peer).
01:23:55 -!- pool has quit (Ping timeout: 240 seconds).
01:26:08 -!- pool has joined.
01:34:02 -!- amby has quit (Quit: so long suckers! i rev up my motorcylce and create a huge cloud of smoke. when the cloud dissipates im lying completely dead on the pavement).
01:59:09 -!- pool has quit (Read error: Connection reset by peer).
01:59:34 -!- pool has joined.
04:08:11 <esolangs> [[Ruler function]] https://esolangs.org/w/index.php?diff=170759&oldid=170752 * PkmnQ * (+158) /* Implementations */
04:33:10 <esolangs> [[Special:Log/newusers]] create * Mikacat29 * New user account
05:07:38 -!- slavfox has quit (Quit: ZNC 1.8.2 - https://znc.in).
05:10:46 -!- slavfox has joined.
05:13:12 -!- sprout has quit (Ping timeout: 256 seconds).
05:14:54 -!- sprout has joined.
05:36:02 <esolangs> [[EsoFmt]] M https://esolangs.org/w/index.php?diff=170760&oldid=140905 * None1 * (-2) /* Tags */
06:10:52 <esolangs> [[Special:Log/delete]] delete * Ais523 * deleted "[[Template:Stub-2]]": unnecessary template (we already have a stub template, and having just one template instead of two helps to keep a consistent style)
06:48:44 <ais523> hmm, there must be a large timezone difference – it's the morning for me and for APic
06:50:57 <korvo> Yeah. I'm in Oregon. It's nearly 11PM here.
06:51:59 <ais523> <int-e> IIUC the GPL *encourages* you to print license information in interactive programs but doesn't require it either. ← IIRC it requires it in cases where you modify a non-interactive program to become interactive, but it doesn't require it in other cases because the author of software can't violate their own copyright and if the author didn't add a way to do that themself, it'd be a burden on the downstream to make them do it instead
06:52:51 <ais523> so a "you must print a license notice" would be unenforceable, or not useful to enforce, in any case other than the noninteractive-modified-to-be-interactive case
06:54:09 <ais523> when I was young, there was advice recommending that Brits should use the internet in the morning, because in the British morning most Americans would be asleep and thus there would be less load on the sites that you were visiting
06:54:42 <korvo> You must not deprive downstream users of the right to be informed that they should cite GNU Parallel~
06:54:56 <ais523> nowadays, large sites have global CDNs and small sites can nearly always handle the load of humans accessing them, so the advice doesn't make sense any more
06:55:19 <ais523> (all sites are struggling with the AI scrapers but they don't have a reason to scrape only in USA datyime)
06:55:52 <ais523> I think SLOCCount also gives citing instructions, as part of its output?
06:56:28 <ais523> ah, just «Please credit this data as "generated using David A. Wheeler's 'SLOCCount'."»
06:56:52 <ais523> it has the inconsiderateness to use both common kinds of quote mark in the request
07:01:36 <ais523> <GNU Parallel citation notice FAQ> If you feel the benefit from using GNU Parallel is too small to warrant a citation, then prove that by simply using another tool.
07:02:05 <ais523> at least that is reasonable
07:02:12 <int-e> That doesn't negate the rights given to anyone under the GPL 3.
07:02:44 <int-e> If they wanted to enforce all this they'd have to drop that license and presumably the GNU label :P
07:03:25 <int-e> I agree with it on a moral level... but the execution is horrible and almost begging for exploits.
07:03:35 <ais523> I'm just impressed that this FAQ is 309 lines long
07:04:00 <ais523> fwiw I've never felt the need to use GNU Parallel – when I've been running things in parallel I've done it by hand
07:04:38 <korvo> Personally I like how GNU gives each different subproject an allowance for exactly one (1) quirk. GNU Parallel's got the notice. GNU recutils has the photo of the turtles fucking.
07:05:37 <ais523> glibc has more than one quirk
07:06:09 <korvo> The maintainer used to be the quirk.
07:06:12 <int-e> ais523: Like, I agree you should cite works if you rely on them academically. But when you make it sound like a contract matter it becomes a target for circumvention.
07:06:27 <lambdabot> *** "lawyer" devil "The Devil's Dictionary (1881-1906)"
07:06:27 <lambdabot> LAWYER, n. One skilled in circumvention of the law.
07:07:12 <int-e> Hmm maybe I'll figure out where that empty line comes from later this week.
07:59:48 -!- ais523 has quit (Quit: quit).
08:06:43 -!- tromp has joined.
08:39:37 -!- chloetax has quit (Ping timeout: 264 seconds).
09:02:13 -!- zzo38 has quit (Ping timeout: 246 seconds).
09:27:59 -!- Sgeo has quit (Read error: Connection reset by peer).
10:17:17 <esolangs> [[User:RaiseAfloppaFan3925]] M https://esolangs.org/w/index.php?diff=170761&oldid=170192 * RaiseAfloppaFan3925 * (+350) added signature history
10:44:17 <esolangs> [[User:RaiseAfloppaFan3925]] M https://esolangs.org/w/index.php?diff=170762&oldid=170761 * RaiseAfloppaFan3925 * (+21) fixed signature lol
11:58:27 -!- tromp has quit (Quit: My iMac has gone to sleep. ZZZzzz…).
12:00:02 -!- tromp has joined.
12:12:02 <esolangs> [[Meu]] https://esolangs.org/w/index.php?diff=170763&oldid=170310 * Timm * (+7)
12:12:13 -!- tromp has quit (Quit: My iMac has gone to sleep. ZZZzzz…).
12:20:13 <esolangs> [[3Byte2Jump]] https://esolangs.org/w/index.php?diff=170764&oldid=170702 * Timm * (+21)
13:31:50 -!- amby has joined.
13:35:26 -!- tromp has joined.
13:49:46 -!- joast has quit (Quit: Leaving.).
14:19:02 -!- Everything has quit (Quit: leaving).
14:51:50 <esolangs> [[Talk:Tautologylang]] https://esolangs.org/w/index.php?diff=170765&oldid=154913 * Hammy * (+83)
14:55:35 <esolangs> [[CoffeeLang]] M https://esolangs.org/w/index.php?diff=170766&oldid=159610 * Hammy * (+29) Smells like AI. The reason why I think this is because I found `backticks` being used for a code font (like with most AIs) instead of <code>.
15:00:20 <esolangs> [[Object-Oriented Brainfuck (Hammy)]] https://esolangs.org/w/index.php?diff=170767&oldid=170755 * Hammy * (+177)
15:38:18 <esolangs> [[User:QuantumV]] M https://esolangs.org/w/index.php?diff=170768&oldid=170051 * QuantumV * (-221)
15:38:51 <esolangs> [[User:QuantumV]] M https://esolangs.org/w/index.php?diff=170769&oldid=170768 * QuantumV * (-87)
15:49:38 -!- tromp has quit (Quit: My iMac has gone to sleep. ZZZzzz…).
15:51:15 -!- pool has quit (Ping timeout: 240 seconds).
15:55:43 -!- chloetax has joined.
16:17:55 -!- impomatic has joined.
16:29:32 -!- svm has quit (Ping timeout: 244 seconds).
16:32:14 -!- tromp has joined.
17:14:33 -!- jack7087 has changed nick to knorkle.
17:14:40 -!- knorkle has quit (Quit: knorkle out).
17:15:02 -!- knorkle has joined.
17:15:44 -!- knorkle has quit (Client Quit).
17:16:05 -!- knorkle has joined.
17:20:17 -!- pool has joined.
18:15:44 -!- tromp has quit (Quit: My iMac has gone to sleep. ZZZzzz…).
18:28:12 -!- tromp has joined.
19:32:41 -!- Lord_of_Life_ has joined.
19:33:04 -!- Lord_of_Life has quit (Ping timeout: 255 seconds).
19:35:27 -!- Lord_of_Life_ has changed nick to Lord_of_Life.
19:41:55 <fizzie> https://0x0.st/PrUv.txt <- not winning any races, but at least the result's correct
20:08:12 <fizzie> In all its (lack of) glory: https://0x0.st/Pr0m.blsq
20:08:22 <fizzie> (Very much not golfed.)
20:12:13 <int-e> I hope you have a more structured version of this :P
20:21:42 <fizzie> Yeah, https://0x0.st/Pr0w.txt is how it looked while writing.
20:24:49 <int-e> `` dc <<<9o27190132379013256p
20:27:09 <int-e> interesting, I half expected that an alternating sum (a-b+c-d+e-f) might be shorter
20:28:40 <fizzie> It's pretty much a direct port of the Go solution, which did `a*e*i + b*f*g + c*d*h - c*e*g - b*d*i - a*f*h` there. I'm sure there's something more compact than 27190132379013256 9dgsi3co)pd3co)++^p.- to get the same result, but I've already used too much time on it.
20:29:33 <int-e> And also I see why 048 can't be first, but 408 was an option too :P
20:30:14 <fizzie> Well, 1 < 4, and sometimes that's enough to bump it one decimal digit longer. Probably not here.
20:31:07 <fizzie> Actually that probably should've just used the decimal form.
20:31:07 <int-e> > dcc<<<9i408156237246138057p
20:31:08 <lambdabot> Variable not in scope: dcc :: cat b0 cVariable not in scope: i40815623724613...
20:31:15 <int-e> `` dcc <<<9i408156237246138057p
20:31:17 <HackEso> /hackenv/bin/`: line 5: dcc: command not found
20:31:19 <int-e> `` dc <<<9i408156237246138057p
20:31:34 <fizzie> `blsq 156048237246138057XX
20:31:36 <HackEso> {1 5 6 0 4 8 2 3 7 2 4 6 1 3 8 0 5 7}
20:31:56 <fizzie> There's a shorthand notation for 10dg as XX, plus it doesn't need the space to distinguish it from being part of the number.
20:32:09 <fizzie> And base 9 is pretty close to base 10.
20:33:16 <fizzie> Yeah, that's shorter by one whole character.
20:40:37 -!- impomatic has quit (Quit: Client closed).
20:40:44 -!- KinuTheDragon has joined.
20:49:31 -!- KinuTheDragon has quit (Ping timeout: 264 seconds).
20:58:31 -!- chloetax has quit (Ping timeout: 240 seconds).
21:08:27 -!- tromp has quit (Quit: My iMac has gone to sleep. ZZZzzz…).
21:10:00 -!- tromp has joined.
21:33:00 -!- KinuTheDragon has joined.
21:33:21 <KinuTheDragon> sorry, meant to ask "is the wiki down for anyone else, and is it possible to fix?"
21:33:30 <KinuTheDragon> previous msgs didn't go through after the first word it seems
21:40:19 <int-e> It's not just you. The usual suspect is scrapers overloading the singular server that hosts the wiki.
21:40:45 <int-e> It worked fine a few hours ago.
21:41:33 <korvo> KinuTheDragon: No worries. I'm just happy to put my improv-class skills to use.
21:41:51 <korvo> Ooh, there's a bluelink on that joke: https://en.wikipedia.org/wiki/Yes,_and_...
21:43:17 * int-e wonders how widely spread calling the people doing that Yes-Andys is.
21:43:26 <KinuTheDragon> To be honest, the reason for that issue was that I tried running my own hand-written IRC client that I made in Python and forgot to include the ":" in the message I was sending, lol
21:44:37 <KinuTheDragon> anyway, quoted that to the esolangs discord so they also know the situation
21:45:40 <korvo> KinuTheDragon: One of us! One of us!
21:45:47 <KinuTheDragon> the only reason i realized that it was down was because i was looking for information on 3-cell brainf*** so i could see how feasible it is to implement in I Wanna Lockpick
21:46:12 <korvo> I'm kind of surprised that handwritten IRC still works on Libera. I had thought that we now require secure connections. But I'm glad that you could make it.
21:46:32 <korvo> KinuTheDragon: Handwriting IRC clients is a good sign that you're in the right place.
21:46:41 <KinuTheDragon> that was how i sent the previous messages but i'm using hexchat right now
21:46:55 <KinuTheDragon> my client still has a long ways to go before it's actually good
21:47:22 <KinuTheDragon> heck, it crashed when you sent your "Yes, and is" message
21:47:48 <korvo> No worries. Eventually you'll get to the point where you're writing your client in your own language and you can't figure out if the bug is in the runtime or the compiler or the library.
21:48:24 <korvo> Ooh, that's a hidden achievement for today! Nice.
21:48:41 <int-e> korvo: I'm not sure it's required by Libera (but I do know that there's a channel mode for it), and in any you can leave the SSL wrapping to an external tool like socat :P
21:49:31 <int-e> (sticking out my tongue because I'm doing that for lambdabot)
21:50:49 <int-e> +S (capital) would be the "SSL users only" channel mode.
21:54:50 -!- KinuTheDragon2 has joined.
21:55:39 <KinuTheDragon> i'm going to see if i can understand why exactly it was unhappy with that message
21:56:20 <KinuTheDragon2> on a slightly more interesting note, i can also do some neat color tricks with this
21:59:53 <KinuTheDragon> oh i see the issue! it's because when i check for parsing a host name, it doesn't account for something like an... i think it's ipv6? in my code
22:00:10 -!- KinuTheDragon2 has quit (Quit: KinuTheDragon2).
22:00:42 <korvo> Oh, I have no idea how my hostname appears. I am using a relatively quirky client (catgirl) and I'm connected over IPv6 maybe? Definitely through an Yggdrasil tunnel which is always IPv6.
22:00:59 <korvo> I used to set it to a hostname or a cloak but I stopped caring.
22:03:21 <int-e> well you can look at your own /whois
22:04:00 <KinuTheDragon> masking it, where x is a hex digit, it's xxxx:xxxx:x:xxx::xxx:xxxx
22:20:17 -!- KinuTheDragon2 has joined.
22:22:41 <fizzie> As people guessed, it was excessive crawling (20 reqs/s) again.
22:23:16 <fizzie> I do have alerts for it now, but I also don't pay attention good.
22:39:48 <esolangs> [[ASTLang]] https://esolangs.org/w/index.php?diff=170770&oldid=170740 * NTMDev * (+107)
22:39:57 <esolangs> [[ASTLang]] https://esolangs.org/w/index.php?diff=170771&oldid=170770 * NTMDev * (+6)
22:40:13 <esolangs> [[ASTLang]] https://esolangs.org/w/index.php?diff=170772&oldid=170771 * NTMDev * (+2)
22:49:36 -!- KinuTheDragon2 has quit (Quit: KinuTheDragon2).
22:49:40 -!- KinuTheDragon has quit (Quit: Leaving).
22:58:48 -!- msv has joined.
23:12:05 <esolangs> [[DTM]] https://esolangs.org/w/index.php?diff=170773&oldid=170411 * Ytebbit * (+263) Delete request
23:22:13 -!- Sgeo has joined.
23:36:35 <b_jonas> Paper gift bag with christmas-themed decoration printed on it came with a small label saying "This gift bag is 100% recyclable once handles are removed.". That's a funny abuse of the phrase "100%".
23:41:06 <b_jonas> I wonder if I should use that as a future password of the month
23:53:08 -!- tromp has quit (Quit: My iMac has gone to sleep. ZZZzzz…).