Search logs:

channel logs for 2004 - 2010 are archived at ·· can't be searched

#osdev2 = #osdev @ Libera from 23may2021 to present

#osdev @ OPN/FreeNode from 3apr2001 to 23may2021

all other channels are on OPN/FreeNode from 2004 to present

Thursday, 5 May 2022

00:41:00 <Griwes> Turns out that spending last late evening on getting shit done on my OS made also able to actually progress on getting shit done for work
00:49:00 <gog> i have not done anything in weeks :D
00:49:00 <gog> p busy with other things and don't really have the wherewithal to code
00:54:00 <Mutabah> Griwes: It gave you the feelgoods to lift yourself out of a funk
00:54:00 <Mutabah> (Well... that seems to happen with me)
00:54:00 <Griwes> Yeah
00:55:00 <Griwes> Just another reason I'll never work for a company that insists it must own all code I write in my own time
01:39:00 <geist> Oh woot getting things done
01:40:00 <geist> Just had a day of meetings today, looking forward to doing some osdev this evening
01:52:00 <heat> i've done a lot of tcp work today
01:53:00 <heat> added ipv6 support, full-duplex connection closing
01:54:00 <heat> now I just need TIME_WAIT, then I'll move on to getting connections
02:22:00 <geist> ooooh fun
02:22:00 <geist> whatcha gonna do about the udp4/udp6 and tcp4/tcp6 split?
02:22:00 <geist> trying to unify the code or fork?
02:23:00 <geist> was vaguely pondering the notion of doing it in C++ and using a template specialization to avoid *too* many ifs
02:23:00 <geist> but really depends on what the delta is
02:26:00 <heat_> udp has some templating on the sending side because it's super simple
02:27:00 <heat_> I realised tcp is way more complex and because of that I just eat the if(effective_domain() == AF_INET) do_this(); else do_that();
02:27:00 <heat> templating it all would not be fun
02:28:00 <heat> and as far as I can tell, linux agrees with me (udp6 is copied from udp4, but they share most of the tcp and have a tcp_ipv4 and tcp_ipv6)
02:31:00 <heat> the way I designed my sockets, my tcp stack only really needs to branch on sending and calculating the checksum
02:32:00 <heat> i abstract a lot of details with my proto_family (which is implemented by inet and inet6)
02:33:00 <heat> a side effect is that v6's proto_family needs to route a lot of functions to v4 because of the hybrid ipv6 stack
02:43:00 <heat> i feel like these old rfcs are really hard to read
02:44:00 <heat> very obtuse
02:53:00 <geist> heat: good to know. i honestly haven't really looekd much into it
02:53:00 <geist> may simply be if nothing else because udp is simple enough there's not enough shared code by volume
02:54:00 <geist> but tcp most of the complexity is stuff that's the same since it's far more complex than udp
02:55:00 <heat> yah udp can just be a dumb thing that prepares a udp datagram and sends it to the next layer
02:55:00 <geist> also haven't looked into thed rtails but i guess with lack of fragmentation at the ip level and whatnot things may be different a bit there (with udp)
02:55:00 <geist> right, udp being basically ip + port
02:56:00 <heat> my way of dealing with the lack of fragmentation is that I just don't
02:57:00 <heat> path mtu detection is complicated and I haven't found a non 1500 mtu yet
02:58:00 <kazinsal> iirc PPPoE sometimes uses an MTU of 1492
02:58:00 <geist> yah eactly, because of some vlan stuff. i actually used to have a smaller mtu at my house because of precisely that
02:59:00 <geist> i remember having some problem once with something as a result
02:59:00 <geist> it's because the pipe coming in my house was a vlan + pppoe on top of it
02:59:00 <geist> both of those together chewed up some of it
03:00:00 <kazinsal> PPP over ATM is much nicer because you don't have to worry about that since it uses AAL5, which lets you do variable length packets over ATM cells
03:02:00 <heat> actually pmtud doesn't look that complex
03:02:00 <geist> yah i remember looking into it and that was basically why it was delivered pppoe into the house. the fiber -> ethernet box on the outside of the house was basically deframing ATM and plonking it on an ethernet interface
03:02:00 <geist> it used different vlans because i think there was a possibility of other vlans for video and voice
03:03:00 <heat> i still have a lot on my plate though. basically a decent implementation of rfc793 and then I'll go through 1122 and see what I'm missing
03:03:00 <kazinsal> IP fragmentation is just a nightmare that really only works properly in the context of classic internet protocol end-to-end philosophy
03:03:00 <geist> nice, someone installed some sort of ADT security system on their house and used my email address for notifications
03:04:00 <geist> so i get stuff like 'your upstairs window is open'
03:04:00 <heat> and then all the other rfcs. this osdev thing is hell and will never end
03:04:00 <kazinsal> it doesn't work well with stateless firewalls, it doesn't work well with NAT, it doesn't work well with policy based routing, it doesn't work well with ECMP
03:04:00 <geist> heat: but we like it because we're all masochists
03:04:00 <heat> amen
03:05:00 <heat> "when will you end your OS?" "N E V E R"
03:05:00 <heat> kazinsal, you do need to fragment though
03:06:00 <heat> stupid protocols like udp need it
03:06:00 <kazinsal> and it sucks
03:07:00 <geist> that's a diff of udp6 though right? since ip can do it, you simply return error if you tell it to do something that can't be fragmented?
03:07:00 <kazinsal> when SSLVPNs started using DTLS it became a friggin nightmare
03:07:00 <heat> ipv6 can do it too
03:07:00 <heat> the only difference is that *routers* can't fragment your packets
03:07:00 <geist> hmm, i thought fragmentation wasnt part of the ip layer?
03:07:00 <geist> ah
03:08:00 <geist> but is it assumed to reassemble at the other end as a single udp packet?
03:08:00 <kazinsal> yeah
03:08:00 <geist> you know i guess it has to anyway, because of ethernet level fragmentation/reassembly
03:08:00 <geist> which modern nics do out the wazoo
03:08:00 <geist> so you need at least the ability for things to get fragemented and reassembled there
03:09:00 <geist> and thus there has to be enough infos in the ip4/6 header
03:09:00 <kazinsal> I'm not 100% sure if IPv4 routers are allowed to look at datagrams that need to be fragmented and go "lol do it yourself" and send back an ICMP Fragmentation Needed
03:09:00 <kazinsal> that's what you're supposed to do if DF is set
03:09:00 <kazinsal> but if it's not set I'm unsure as to whether or not that's a legal action
03:09:00 <heat> lets see
03:09:00 <geist> for some reason i'm thinking no, down to some sort of minimum mtu of 512 iirc
03:10:00 <heat> 576 is the minimum mtu for ipv4
03:10:00 <geist> is that with or without headers?
03:10:00 <heat> kazinsal, they're not
03:10:00 <heat> rfc1812 says "Fragmentation, as described in [INTERNET:1], MUST be supported by a router."
03:10:00 <heat> geist, including headers
03:10:00 <kazinsal> unsurprising
03:11:00 <geist> heat: yeah smells like 512 payload plus some overhead of something
03:12:00 <kazinsal> I think 60 bytes is the maximum allowed IP header size
03:12:00 <geist> does remind me i was thinking of implementing SLIP so i can talk to my 68k board
03:12:00 <geist> which has a second serial port
03:12:00 <kazinsal> 20 bytes + up to 40 bytes of options
03:13:00 <geist> yah 512 + 60 + 4 would get you 576
03:13:00 <geist> maybe the 4 is some sort of slip header or whatnot at the time
03:13:00 <geist> since i think most inter computer interconnects at the time were some form of serial
03:13:00 <kazinsal> yeah, lots of weird little things like that
03:14:00 <geist> or say 2 bytes of length + 2 bytes of checksum + data
03:15:00 <heat> "For example, this size allows a data block of 512 octets plus 64 header octets to fit in a datagram."
03:16:00 <heat> The maximal internet header is 60 octets, and a typical internet header is 20 octets, allowing a margin for headers of higher level protocols."
03:16:00 * geist throws your octets on the ground
03:16:00 <heat> oh no not my octets
03:16:00 <geist> i'm not part of your SYSTEM
03:17:00 <kazinsal> ICMP's minimum header size is 4 bytes
03:17:00 <kazinsal> so that makes sense
03:17:00 <heat> these really old rfcs really insist on the octet thing
03:18:00 <klange> _byte_ isn't/wasn't defined as an octet, and when you're talking about bits on the wire it's important to specify
03:19:00 <geist> yah totally. really important for 9 or 12 or whatnot bit systems
03:19:00 <heat> by 1989 (rfc1122) they kinda gave up
03:19:00 <geist> which does raise the point if you had a non 8 bit multiple system, what was the usual encoding for this stuff
03:19:00 <heat> 18 mentions of octet vs 11 "byte"
03:19:00 <geist> like pdp10 was a big machine with lots of internet stuffs on it. 36 bits
03:20:00 <geist> i had read somewhere that AOL was one of the last ones still using it pretty late in the game (or was it compuserv?_
03:20:00 <geist> )
03:20:00 <geist> i vaguely remember at Danger we had some trouble talking to the AOL instant messenger servers for our whole proxy thing for the Hiptop
03:21:00 <klange> depending on how late in the game, compuserv _was_ AOL
03:21:00 <geist> because turns out i think we were talking to some sort of bespoke user space net stack they were running and our Solaris machines were having trouble with their tcp/ip 'stack'
03:21:00 <geist> but they weren't used to holding network connections to peer servers outside of their cluster
03:22:00 <geist> so even by the early 2000s they were still using TOPS-20 or something like that
03:24:00 <kingoffrance> ^ yeah you can research where early tcp started, what os and machines
03:24:00 <kingoffrance> or precursors perhaps, dont know details
03:24:00 <kingoffrance> "testbeds"
03:26:00 <kingoffrance> they couldve called them dollars, pieces of eight
03:26:00 * kingoffrance gets yanked off stage by cane
03:32:00 <geist> make sure you tip the staff
03:34:00 <geist> randomly rediscovered this: i love these
03:35:00 <geist> i always think about the meeting one all the time
03:37:00 <heat> haha i love it
03:37:00 <klys> so I am now curious about doing math with tables (for example a ~1kb trig table that translates fixed point radians to sin/cos), or 1/x tables, or larger mul/div tables, and am curious if anyone here has seen such tables smployed in code
03:38:00 <heat> >math
03:38:00 <heat> >tables
03:38:00 <heat> that's my cue to leave
03:38:00 <heat> screw dem tables
03:39:00 <klys> pretty sure that's how your fpu does trig, with a hardwired slide rule
03:40:00 <Mutabah> I've definitely heard of the concept
03:40:00 <geist> i think it was super common in the day to precompute sin/cos to say 1000 units (or 250 and mirror) and then just lerp between
03:40:00 <Mutabah> ^
03:40:00 <geist> for games and whatnot where it's not that important it be super accurate, but fast
03:41:00 <geist> x86 cpus at least that implement them in hardware (dont think any other modern cpu has trig functions in hrdware) i think use a combination of tables + an interative method
03:41:00 <klys> so actually may be looking for examples of such tables
03:42:00 <geist> was thinking a bug in one of the tables was part of the pentium debacle?
03:42:00 <klys> ah familiar
03:43:00 <geist> ah yes, FDIV. something to do with some internal look up tables
03:43:00 <bslsk05> ​ Pentium FDIV bug - Wikipedia
03:43:00 <geist> might be interesting to see if someone did a deep dive of precisely what that algorihm was
03:44:00 <geist> heh i wonder if pentiums with the bug are collectors items now
03:44:00 <klys>
03:44:00 <bslsk05> ​ P54C Erratum 23 (FDIV bug).
03:45:00 <geist> yah i remember at the time it was basically a non issue for the vast majority of people, but intel botched it and turned it into a much bigger issue
03:47:00 <klys> well the author of this got me going on it:
03:47:00 <bslsk05> ​'Imgur' by [idk] (--:--:--)
03:53:00 <klys>
03:53:00 <bslsk05> ​
03:53:00 <klys> there's a plot of the results of intel's fdiv bug
03:53:00 <geist> yep
03:54:00 <geist> ah that was back when byte magazine was actually a thing and was good
04:02:00 <klys> if you were using a lib for fixed point math, I'm sure you would expect the author to provide a tool to generate the table, when compiling the lib
04:27:00 <klys>
04:28:00 <klys> check page 269/278 for sure
08:16:00 <mrvn> When you have encapsulation, like pppoe, the mtu can get smaller so the encapsulated frame is still 1500 byte. The problem with pppoe is/was that the commercial routers did NOT do fragmentation. So any frame over 1492 byte got just dropped. So under linux you would clamp the IP mtu discovery to the physical MTU of the ppp0 device (1492) forcing servers on the internet to never send you too large frames.
08:18:00 <kazinsal> rewriting my internal API standards etc before I get too deep into porting/adapting/rewriting my kernel as a 64-bit portable one. think I'm still going to keep the PfxOperationObject format for function names as I rather like it
08:19:00 <mrvn> PfxOperationObject format?
08:20:00 <kazinsal> the Windows API function naming convention with a 2 (if possible) letter prefix, then a verb-noun function description
08:20:00 <j`ey> NetTransferIPv4
08:20:00 <j`ey> BlkSubmitSCSI
08:20:00 <kazinsal> DbgCrashSystem
08:20:00 <j`ey> idk if they're correct examples :P
08:22:00 <mrvn> Pfx, Net, Blk? I count 3 there, not 2.
08:22:00 <kazinsal> the original intent in the Windows API was to always use two letter prefixes like Mm or Ke or Io or Ps
08:23:00 <mrvn> By the way, the vowel shortness of the last millenium has past.
08:24:00 <mrvn> I would probably call the functions: Net::IPv4::transfer, SCSI::submit_block
08:25:00 <mrvn> or Block::SCSI::submit
08:25:00 <kazinsal> that would require using C++ and I am not using C++
08:26:00 <kazinsal> or I suppose Rust uses that notation but I do not know Rust
08:32:00 <mrvn> ahhh, namespaces, the best thing since sliced bread.
08:48:00 <geist> because __func__ wasn't already long enough
08:55:00 <mrvn> __PRETTY_FUNCTION__
08:56:00 <kazinsal> also think I'm going to still aim to write a companion design and architecture book to go with the system so I have two reasons to finish and release it ;)
09:01:00 <Jmabsd> Guys, on ARM, can you set the page size to a really small value like 128B or 64B?
09:01:00 <mrvn> nope
09:02:00 <Jmabsd> what's the smallest? on Intel apparently there's a trick to get 128B
09:02:00 <mrvn> 4k
09:02:00 <Jmabsd> aww :-( on intel the trick is EPT
09:02:00 <mrvn> European Poker Tour?
09:02:00 <kazinsal> Extended Page Tables
09:03:00 <kazinsal> basically intel's implementation of nested paging
09:03:00 <mrvn> how does that get you below 4k page size?
09:03:00 <kazinsal> it includes a sub-page RO bit thing that lets you split a 4KiB guest page into 128-byte subpages for toggling R/W access
09:04:00 <kazinsal> it's not a full implementation of sub-4KiB pages but it gives you more granular access control
09:04:00 <kazinsal> I don't believe it incurs any translation penalty either
09:06:00 <mrvn> ARM lets you have smaller page tables though.
09:07:00 <mrvn> it's actually kind of screwy with the second level page tables being 1k in size.
12:53:00 <j`ey> why does ldd show 'not a dynamic executable' but file says its dynamically linked?
12:55:00 <clever> j`ey: is it for the right arch?
12:56:00 <clever> [clever@amd-nixos:~]$ file result/bin/hello
12:56:00 <clever> result/bin/hello: ELF 64-bit LSB executable, ARM aarch64, version 1 (SYSV), dynamically linked, interpreter /nix/store/r2lmrk1l3pxb8ivx2yhnhxas7nqxd3vh-glibc-2.33-56/lib/, for GNU/Linux 2.6.32, not stripped
12:57:00 <clever> [clever@amd-nixos:~]$ ldd result/bin/hello not a dynamic executable
12:57:00 <clever> i can reproduce the error when i try to ldd an aarch64 on an x86 system
12:57:00 <j`ey> that's what I was originally thinking, it seems to be in the sysroot so it should be fine..
12:57:00 <clever> the thing with ldd, is that it works in an incredibly non-obvious way
12:57:00 <clever> ldd is a bash script, that runs the host on the target binary, with a magic env var set
12:57:00 <clever> so in my case, it ran an x86 on an aarch64 elf binary
12:58:00 <clever> [clever@amd-nixos:~]$ LD_TRACE_LOADED_OBJECTS=1 ls
12:58:00 <clever> this is the magic variable, and uses the correct, from the elf headers of ls
13:00:00 <j`ey> well I guess I believe file/readelf then!
13:00:00 <clever> readelf can also print the DT_NEEDED
13:01:00 <clever> the main thing ldd is throwing into the mix, is actually searching for the needed libs, recursively, using the host path
13:01:00 <j`ey> lol I get a segfault when using LD_TRACE_LOADED_OBJECTS=1
13:06:00 <j`ey> I was trying to build a dynamically linked aarch32 binary to run on aarch64, but of course now I need a 32 bit ld-*.so
13:06:00 <clever> ahhh
13:06:00 <zid> nm works in a sane way at least :P
13:42:00 <mrvn> ldd can also execute code so it isn't exactly save.
13:53:00 <mjg> it will do it by default
15:03:00 <gog> mew
19:50:00 * geist pets gog
19:50:00 * gog prrs
19:51:00 * mjg suggests you guys get a room
20:02:00 <zid> I think you two should split up for a bit, don't worry it will only make your relationship stronger I'm sure
20:13:00 * geist throws a tantrum
20:17:00 * dminuoso catches it
20:25:00 <geist> today is oneo f those days where i have been failing to adult
20:25:00 <geist> gotta get my shit together and try to recover the afternoon
20:29:00 <psykose> nah
20:29:00 <psykose> just need more pets
20:30:00 <mjg> getting shit together is for the weak
20:30:00 <mjg> take a nap instead
20:32:00 <geist> okay, so 3rd day of testing crashy server: removed 10gbe card, ran it for 36 hours, eventually crashed
20:33:00 <geist> so it's not the presence of the card
20:33:00 <zid> I've got a small cough
20:33:00 <geist> will probably switch back to the old vid card next
20:33:00 <zid> but a small cough in the way that I know when I wake up tomorrow it will be a terrible cough
20:33:00 <zid> that hurts
20:33:00 <geist> ugh coughs are the worst
20:33:00 <zid> so I've got that going for me, which is nice
20:36:00 <geist> re: small page sizes from before, the smallest i've seen in reasonably modern hardware is 512 bytes. that's what the VAX does
20:36:00 <zid> You just need to stretch reasonably modern
20:37:00 <geist> as a curio at least. 4K seemed to generally become the defacto standard in the early 80s, more or less simultaneously by second generation paging systems
20:37:00 <geist> oh i think it's reasonably modern. 1977, just before the era of x86 and 68k
20:37:00 <zid> So reasonably modern as in, relative to humanity
20:37:00 <zid> rather than say, iphones
20:37:00 <geist> and they were clearly inspired by it since it was the defacto standard for paged big systems in the early to mid 80s
20:38:00 <geist> fine anyway. 512 bytes. there ya go
20:38:00 <zid> 512 seems nice
20:38:00 <zid> it's small enough that you could just.. allocate right out of it
20:38:00 <geist> seems reasoably sized for machines of the era at least. where say 4MB of ram was a pretty serious machine
20:39:00 <zid> with a gig of ram, 512 bytes is a really nice granularity for malloc blocks imo
20:39:00 <geist> 4K paging you only have 1024 pages in that case
20:39:00 <zid> go for a super thin OS that just uses the page tables directly :P
20:40:00 <geist> vax page tables were interesting too: allocated linearly. no indirection, simply 0-N entries, where you can dynamically set N in the control register that sets the base
20:40:00 <geist> so based o how big your process is you picked an N
20:40:00 <geist> so i think when systems started getting biggr and bigger in the 80s, where say 128 or 256MB was starting to become more normal on a big VAX that was starting to get pretty large
20:41:00 <geist> what i dunno is if vms or unices at the time on vax had some sort of notion of how big the process was, or if it was expected that the kernel would grow the page table over time by spilling over and then needing more of it
20:44:00 <jimbzy> Alo
20:44:00 <geist> hiys
20:45:00 <jimbzy> Just got back from an eye exam and my vision is a little wonky from the tests. "Stare into the camera flash!"
20:48:00 <geist> oh yeah
20:48:00 <geist> reminds me, i need to set up an appointment too. about that time
20:49:00 <jimbzy> Yeah, I try to get mine done every 1-2 years depending on how the glasses hold up. Everything was just about the same, but my near-sightedness improved a bit.
20:50:00 <geist> yeah sadlky i've hit the age where my eyes are progressively getting worse every year
20:50:00 <geist> the doc said last time that sometimes that stabilizes after a few years, but so far nope
20:50:00 <jimbzy> Mine go a little bit each year, too, but it as actually slowed down in recent years.
20:50:00 <geist> now i an fairly strongly far sighted
20:51:00 <geist> not toooo bad for getting around, but can no long focus on any detail, especially up close
20:51:00 <jimbzy> Thank Odin for polycarbonate lenses, amiright?
20:52:00 <geist> i guess nice thing is if i squint really hard i can focus on something up close, so worst case if i lost my glasses or something i could survive for a while, just not productive at any computer tasks or whatnot
20:53:00 <jimbzy> I can read fine without my glasses, but everything past about 2' is a blur.
20:53:00 <geist> like i'd need to lean in and put my eye like 4 inches from the screen kinda squint
20:53:00 <jimbzy> That wouldn't be much fun.
20:58:00 <jimbzy> I wore contacts for about a year and it was too weird for me not having my vision framed.
20:58:00 <geist> yah strange huh? i'm thinking about fiddling with contacts again this year
20:58:00 <geist> that's the oddest thing is suddenly having this peripheral vision your brain has otherwise just filtered out
20:58:00 <jimbzy> Haha yep.
20:58:00 <jimbzy> Driving was the worst. Like everybody was gonna hit me.
20:59:00 <heat> lasik?
20:59:00 <sbalmos> ah yes, early middle aged eyesight plateau. not fun.
20:59:00 <jimbzy> That would be even worse imo. I've been wearing glasses since I was like 8 years old.
21:00:00 <geist> sbalmos: yep and i ws already farsighted, so i started falling off that plateau about 6 years ago and it just gets worse and worse
21:00:00 <geist> the doc things i might hit the bottom soon but dunno
21:00:00 <sbalmos> lasik still makes me pause. everyone who sits at a screen almost all day and got lasik done always ended up with far worse dry eye condition, etc
21:01:00 <zid> do it in one eye
21:01:00 <sbalmos> I'm on year 3 of about 5 or so plateau-wise
21:01:00 <zid> wear an eye-patch at work if you end up needing to
21:01:00 <geist> alas can't do much with lasik for far sighteness
21:01:00 <heat> sbalmos, hm really?
21:01:00 <zid> yea it's one of the known complications I think
21:01:00 <zid> dry eyes
21:01:00 <jimbzy> How old if you don't mind sharing? I just turned 39 two days ago.
21:01:00 <sbalmos> zid: personally I can't do that. almost certain that would disqualify my medical clearance for my pilot's license.
21:01:00 <geist> that being said i've talked to mutiple folks that had lasik and i think everyone had pretty good things to say
21:01:00 <sbalmos> jimbzy: I'm 40 in less than a month. ;)
21:01:00 <zid> sbalmos: Oh, two eye-patches then.
21:02:00 <geist> yay oldies!
21:02:00 <sbalmos> zid: oh, well, flying fully on instruments. I like!
21:02:00 <heat> "Although it is usually temporary, it can develop into chronic and severe dry eye syndrome. Quality of life can be severely affected by dry-eye syndrome."
21:02:00 <heat> that sucks
21:02:00 <zid> Just train your inner ear, that's never a failed a pilot before and made them nose hard down
21:02:00 <jimbzy> Yeah. I figured it was around there.
21:02:00 <sbalmos> My eye doc says I'll be transitioning to bifocals by 43
21:02:00 <geist> i was actually wondering this: if you have bifocals (top is distance, bottom is for reading) how does one operate the switches and whatnot on top of an airplane cockpit?
21:02:00 <jimbzy> That reminds me of Dewey Cox learning to play guitar by ear since he was smell-blind.
21:03:00 <geist> or do pilots wear different types of bifocals for that situation?
21:03:00 <geist> i have the problem that there are a few lights on the top of my subaru for control random stuff and i can't focus on them at all
21:03:00 <sbalmos> geist: no real idea, probably trifocals but with two strength
21:03:00 <zid> crash into the ground, I think, geist
21:03:00 <geist> yah maybe a third zone on the top of the lens
21:03:00 <sbalmos> geist: middle would be distance, but low and high would both be the near strength?
21:03:00 <geist> yah dunno
21:03:00 <zid> cylindrical lenses
21:04:00 <zid> so just pretend you have astygmatism
21:04:00 <heat> reject vision
21:04:00 <sbalmos> zid: Is that why the Flight Management System keeps screaming "Retard! Retard!"
21:04:00 <geist> sbalmos: also 43 is about when i started bifocals
21:04:00 <zid> sbalmos: no, that's because I keep pressing the wrong buttons
21:04:00 <sbalmos> zid: no comment
21:04:00 <geist> maybe a couple years earlier. it's not too bad, but it takes a few weeks to get used to. amazing what your brain can filter out once you let it get used to it
21:04:00 <jimbzy> Are they invisible line ones?
21:05:00 <geist> yah it's a smooth progression
21:05:00 <geist> but i *do* find myself doing the old person thing of tilting my head around a lot more
21:05:00 <jimbzy> Yeah, my MIL has those and I thought it was pretty slick.
21:05:00 <geist> but most of the time i am wearing a second set of computer glasses, set with a fixed focal distance of about 20"
21:05:00 <sbalmos> geist: don't worry about it until you've gone full-snobbery raising head and looking down your nose at something
21:05:00 <geist> and they're fantastic
21:05:00 <sbalmos> ;)
21:05:00 <zid> geist: I picture you as an old man looking down at his fancy electronic telephone screen at arm's length while peering down his nose
21:05:00 <sbalmos> zid: dammit!
21:06:00 <geist> sbalmos: yah alas that's precisely what you end up doing, but it's not beacuse you're a snob, it's because your glasses make you do that
21:06:00 <jimbzy> What's wrong with that, zid?
21:06:00 <zid> do you think something's wrong with it?
21:06:00 <sbalmos> geist: I'll stick with snobbery. Better fits my snarky smartass personality at work. ;)
21:06:00 <geist> noice
21:06:00 <jimbzy> Hell no. I do it quite a bit myself when my lenses have gone full-dark outside
21:06:00 <geist> but yeah with the bifocals you dont have to hold it at arms length at least, but you do have to hold it down
21:06:00 <zid> sbalmos: You're still flying one of *those*?
21:07:00 <geist> the part that was hardest to get used to with bifocals is stairs
21:07:00 <zid> I'd make a great elistist, the problem is just the trivial fact that I don't know anything
21:07:00 <sbalmos> zid: yer darn tootin'! I reckin'...
21:07:00 <geist> that takes a while to get used to. the first few timse you'll feel like you'r going to teeter off into a void
21:08:00 <Griwes> It's amazing what the brain can get accustomed to, whenever I get new glasses it takes me a couple of days to get accustomed to the warping of vision at the edges, but then at least a couple of weeks after that to get accustomed to *not* having the new warping when I take them off
21:08:00 <geist> precisely
21:08:00 <jimbzy> That's how i was with contacts. It was just like "Why is this all so clear!?!"
21:08:00 <zid> I mean hell, after a few days you can completely flip your vision
21:08:00 <geist> only bummer is when you get headaches or whatnot for a whie, but that usually goes
21:08:00 <zid> upside down mirror glasses
21:08:00 <sbalmos> ironically I can see and perceive the lense distance when I'm wearing my glasses vs contacts
21:09:00 <zid> Do you guys see things like a 3D movie
21:09:00 <geist> what i dont understand is if/how they do bifocals with contacts
21:09:00 <zid> with red and blue separation around everything
21:09:00 <sbalmos> geist: different power per eye
21:09:00 <zid> vary the material same as regular lesnses
21:09:00 <zid> ?
21:09:00 <geist> i vaguely remember different per eye
21:09:00 <geist> and alas i dont think that'll work for me, because my left eye sucks balls
21:09:00 <jimbzy> No, but I also can't watch 3D movies without getting a massive headache.
21:09:00 <geist> basically lazy eye, but not in the looks off into the corner thing
21:09:00 <Griwes> I should try contacts at some point
21:09:00 <zid> That has a name I asked someone
21:09:00 <geist> but because it's so much worse my brain doesn't really 'use' it
21:09:00 <Griwes> Even if just to see how different they are
21:09:00 <zid> but I forget what they answered
21:09:00 <sbalmos> geist: yeah that's the interesting part in the next few years. my left eye is horrific. neither one is *bad bad*, but the left is comparably much worse. And astygmatism.
21:10:00 <geist> right
21:10:00 <geist> i have an eye patch that i fiddled with for a while, covering my right eye
21:10:00 <geist> but i think you have to do that seriously for like months to maybe see some sort of improvement
21:10:00 <zid> one of my eyes is marginally worse than the other, but neither bad enough to warrent mechanical assistance
21:10:00 <heat> argh matey
21:10:00 <zid> unless it's a mech suit
21:10:00 <zid> I'd always opt for an evangelion if given the chance
21:11:00 <sbalmos> I'll go for the nano-screen contacts that're bluetooth'd to the phone or my PC
21:11:00 <geist> alas gotta start the meeting train today
21:11:00 <geist> see yas!
21:11:00 <zid> geist always meeting trains, I think he might be an anorak
21:11:00 <sbalmos> Abandon all hope, ye who enter
21:11:00 <zid> especially with those lenses he wears
21:12:00 <Griwes> Hmm, I used to be able to see a color perception difference between my eyes, but I don't think I can anymore
21:12:00 <zid> one of my eyes has a different whitebalance to the other
21:12:00 <geist> very high index lenses can sometimes have a prism effect, but i think they're pretty darn good now
21:12:00 <zid> paper looks a slightly different shade eye to eye
21:12:00 <jimbzy> I don't actually know what the deal is with mine. I think it has something to do with CI if I'm not mistaken.
21:12:00 <geist> can only see it mich f you look at a point light in a very dark light
21:13:00 <Griwes> I definitely had my weaker eye see bleaker colors at some point. Not massively, but bleaker, and also without glasses
21:13:00 <geist> i have seen stuff like a single tricolor led across the room in a dark room appearing to move substantially when displaying red green blue
21:13:00 <geist> but especially red and blue. presumably that's some sort of effect based on the light bending differently
21:13:00 <zid> chromatic abberation
21:14:00 <zid> and yea, it's the mismatched focal length
21:14:00 <zid> because of the prisming
21:14:00 <geist> right
21:14:00 <zid> blue already doesn't focus correctly in our eye
21:14:00 <geist> anyway off to meetings
21:14:00 <zid> Blue seven segment LEDs are damn near impossible to focus on
21:14:00 <jimbzy> Cheers, geist
21:14:00 <sbalmos> I'm about to wrap up for the day. then PIC season finale (ugh, from what I've read) and SNW ep 1
21:15:00 <zid> The PIC season finale is when you finish all the soldering?
21:16:00 <sbalmos> it's when Professor Q reveals his latest lesson to humanity
21:17:00 <zid> I still have no idea what PIC is in your context fwiw
21:17:00 <heat> position independent code
21:17:00 <zid> small shit micro
21:17:00 <sbalmos> Picard ;)
21:17:00 <sbalmos> could've been Pilot In Command too
21:18:00 <zid> I can't decide which is more topical here
21:18:00 <zid> PIC, PIC or PIC
21:18:00 <Griwes> Poorly Instrumented Code
21:18:00 <sbalmos> PIC
21:18:00 <Griwes> A show about bad implementations of sanitizers
21:18:00 <heat> sansan
21:18:00 <heat> sanitizer sanitizer
21:19:00 <sbalmos> cancan?
21:19:00 <Griwes> san san is a go term
21:19:00 <sbalmos> Canonical CAN bus?
21:19:00 <Griwes> (the other go)
21:19:00 <zid> 3 3?
21:19:00 <Griwes> ye
21:19:00 <zid> oh right, the point on the corner
21:19:00 <zid> I GET IT
21:20:00 <zid> I've watched a couple of go videos
21:20:00 <heat> what go?
21:20:00 <heat> the weird chess thing?
21:20:00 <Griwes> the weird chess thing is shogi :'D
21:21:00 <zid> I tried to play shogi
21:21:00 <zid> but the software client I was using treated illegal movies as a resignation
21:21:00 <zid> I did not make much progress
21:21:00 <psykose> lmao
21:21:00 <Griwes> go is the thing where you place black and white stones on intersecting lines
21:22:00 <jimbzy> I'd rather play fan-tan
21:22:00 <zid> never heard of that one
21:22:00 <sbalmos> what about LOGO?
21:23:00 <zid> sounds chinese, I don't know anything about china unless it's filtered through japanese popular culture first
21:23:00 <jimbzy> It is.
21:23:00 <zid> The only reason I even know about lu bu and crap is japanese video games etc
21:31:00 <geist> i did watch the new Captain Pike show last night. liked it
21:32:00 <zid> I watched te first bit of the first one, I liked it until all the star trek happened
21:32:00 <zid> the murder mystery about why she's an assassin or whatever
21:32:00 <geist> anyway
22:07:00 <mjg> lul
22:07:00 <bslsk05> ​ ⚙ D35134 Correctly measure system load averages > 1024
22:16:00 <mrvn> Is there something like "valgrind --track-fds=yes" that can attach to a running pid?
22:18:00 <moon-child> gdb, break on open and close? :P
22:19:00 <moon-child> (or, more likely, strace; but same idea)
22:20:00 <mrvn> won't work, I need to have it run for days and when I see it leaking FDs I want a backtrace where the specific FD was opened.
22:24:00 <mjg> hfm
22:24:00 <mrvn> To clarify the server runs already and I can't restart it. But next time it leaks an FD I want a backtrace.
22:24:00 <mjg> i guess what you can do is use ebpf to track all fd alloation/close calls
22:24:00 <mjg> with user backtraces
22:24:00 <mjg> and then look for the disrepancy
22:25:00 <mjg> which, chances are, wont be difficult
22:25:00 <mrvn> No idea how to do that
22:25:00 <mjg> give me a minute
22:25:00 <mrvn> if I can get a backtrace for every opened FD I can filter the log myself for one of the leaked FDs later.
22:27:00 <mjg> sudo bpftrace -e 'kprobe:__alloc_fd { @[ustack()] = count(); }' -p $pid
22:28:00 <mjg> hm, actually you may want to: sudo bpftrace -e 'kprobe:__alloc_fd /pid == 726312/ { @[ustack()] = count(); }' -o craplog
22:29:00 <mrvn> That doesn't output anything until I quit the process
22:29:00 <mjg> you can kill it any time
22:29:00 <mjg> and then it prints
22:29:00 <mjg> if you want rolling output you can print as opens happen
22:29:00 <mjg> but i don't know the right printf invocation
22:30:00 <mjg> give me a minute
22:30:00 <mjg> key with the above is that it aggregates for you
22:30:00 <mjg> in fact you should be able to spawn 2, one which aggregates and another one which prints as events happen
22:31:00 <mrvn> I kind of need to see at least the FD number returned
22:34:00 <mrvn> @[ __GI___open64+87 0x6c
22:34:00 <mrvn> ]: 3
22:34:00 <mrvn> I'm not sure there is any code at 0x6c that would call open()
22:35:00 <mjg> to be fair ebpf is still kind of experimental :-P
22:35:00 <mjg> works fine on my ubuntu 20.04 fwiw
22:36:00 <mrvn> I attached it to bash can run "cat foo" and get like 40 garbage backtraces
22:36:00 <mrvn> s/can/and/
22:37:00 <mrvn> oh, and ls. my bad. Just "cat" gives just 2 backtraces __pipe+7 0xffffffffffffff88
22:37:00 <mjg> what distro are you running
22:37:00 <mrvn> Debian
22:37:00 <mrvn> Linux ryzen 5.7.0-0.bpo.2-amd64 #1 SMP Debian 5.7.10-1~bpo10+1 (2020-07-30) x86_64 GNU/Linux
22:38:00 <mjg> that's a bummer. it shuld work (tm), i would prod debian people about it
22:38:00 <mrvn> The backtrace doesn't look like the user space stack
22:39:00 <mjg> kernel stack is stack()
22:39:00 <mjg> you can @[stack(), ustack()] = count(); to get them combined
22:39:00 <mjg> the top looks like glibc-side call point
22:39:00 <mjg> it just fails to do unwind for whatever reason
22:40:00 <mrvn> stdin:1:36-43: ERROR: Unknown function: stack
22:40:00 <mrvn> kprobe:__alloc_fd /pid == 15972/ { @[stack(), ustack()] = count(); }
22:40:00 <mjg> sorry, i meant kstack()
22:41:00 <mjg> stack() is dtrace
22:42:00 <mrvn> kernel stack looks find, shows the do_pipe2() calls. ustack is just garbage after __pipe+7
22:42:00 <mjg> well talk to debian folk
22:43:00 <mjg> although, how are you compiling your prog? in particular do you -fomit-frame-pointer?
22:43:00 <mjg> i have to admit i don't know how thei unwinder works, but i'm guessing not making its life harder could be one way to go
22:44:00 <mrvn> The server runs on Ubuntu focal. Maybe it works there. Can say how it was compiled.
22:44:00 <mjg> it is plausible installing debug symbols for dwarf crap will also solve it
22:44:00 <mjg> anyhow i have to go in 5
22:45:00 <mrvn> Should it resolve addresses using the debug symbols from the binary and libs?
22:45:00 <mjg> the crapper should be able to do it on its own
23:08:00 <geist> yah i think the current state of the art is to rely on dwarf/etc instead of frame pointers
23:09:00 <geist> on multiple architectures, in general
23:19:00 <klys> $ make ARCH=68k_64 menuconfig
23:21:00 <geist> nice
23:21:00 <klys> {M} Omit frame pointer?
23:21:00 <mrvn> huh? 64bit 68000?
23:21:00 <klys> (yeah)
23:22:00 <geist> that'd be a fun exercise: design a 64bit extension to 68k
23:22:00 <geist> had it continued on that would have been inevitable
23:23:00 <mrvn> where can I get one?
23:23:00 <klys> I would suggest getting an Altera-style FPGA from Intel for starters
23:24:00 <geist> google suggests that at least one company built a 64bit extension to 68k:
23:24:00 <bslsk05> ​ APOLLO 68080 - High Performance Processor
23:25:00 <geist> looks like an actual amiga accellerator card too
23:25:00 <geist> mrvn: there you go
23:25:00 <klys> they have lots of LUTs and you don't have to use the proprietary Xilinx stuff, you can get openocd or nextpnr
23:28:00 <mrvn> No boards for an A4000
23:29:00 <geist> ah i see how they did it: looks like they add 24 more 64bit registers
23:29:00 <geist> E0-E23 and then a bunch of operations that can work o that
23:29:00 <geist> so it's kinda a half-64bit extension
23:29:00 <mrvn> I wonder how they extended to 64bit. I didn't think the opcode size bits had space for .b, .w, .l, .ll
23:29:00 <kazinsal> dug an old laptop out of storage, still charges and boots fine despite being 24 years old
23:30:00 <geist> ie, the addressing modes are all the same, D0-D7/A0-A7 are still 32bit etc
23:30:00 <geist> so my guess is they just added more modes to existing instructions that operate on the E registers
23:30:00 <mrvn> so more like the FPU
23:30:00 <geist> actually possibly they did it actually as a coprocessor...
23:31:00 <mrvn> Make sense to use one of the two reserved 4bit prefixes.
23:31:00 <mrvn> (the other one being used by the FPU)
23:31:00 <geist> yah looks like they maybe call the new instructions AMMX which have a suite of load/store/math routines
23:32:00 <mrvn> kind of like SSE
23:33:00 <mrvn> any register to register transfer? mov D0, E0?
23:33:00 <geist> i dunno. feel free to look at their page yourself
23:33:00 <geist> its annoyingly structured
23:33:00 <geist> like i just want a damn doc but i only get hypertext
23:34:00 <geist> and it doesn't say 'this is new' it just gives a list of instructions and whatnot
23:34:00 <mrvn> 16 64-Bit Address registers (A0-A15)
23:34:00 <mrvn> 8 64-Bit General Purpose Data registers (D0-D7)
23:34:00 <mrvn> 8 64-Bit FPU registers (Fp0-Fp7,)
23:34:00 <mrvn> 24 64-Bit General Purpose Data registers (E0-E23) which can be used by both ALU and FPU.
23:34:00 <geist> yah and then i the few tabs over it talks about instructions, but id ont see in the general integer tab any real mentio of the E registers
23:34:00 <geist> but over in the AMMX stuff i think those are all E register based
23:35:00 <geist> so it really looksl ike '64bit' means 'packed 16 * 4 instructions'
23:37:00 <geist> anyway no doubt it's powerful for some things
23:37:00 <mrvn> AMMX seems to all be vector opcodes
23:37:00 <geist> it's 64bit in the way pentium mmx is 64bit
23:37:00 <geist> (which i vaguely remember some folks used to say back in the day)
23:38:00 <geist> unrelated: i have an action item to run through and see what's broken about it
23:38:00 <bslsk05> ​ Sparc Barebones - OSDev Wiki
23:38:00 <geist> someone here reported they were not having any success a few weeks back
23:38:00 <geist> have had the tab open since
23:39:00 <mrvn> I can't find anything that uses 64bit for Dx/Ax
23:40:00 <geist> yah
23:40:00 <geist> that being said it's probably pretty fast as an upgrade to an 030 or 040
23:41:00 <geist> by just pipelining things deeper, adding more cache, branch prediction, etc theres a lot of headroom there
23:42:00 <mrvn> if it does register renaming for the 48 registers then it will do even better if you only use the original 16.
23:46:00 <mrvn> hehe, the 68000 had "Selfmodify support". I guess that means you don't have to invalidate the non-existing I-cache when you write/load code to memory.
23:46:00 <mrvn> I'm still angry that motorola removed the 64bit mul/div in the 68060.
23:47:00 <geist> yah so the general strategy was to just trap n emulate?
23:47:00 <geist> and thus be slow as heck?
23:47:00 <mrvn> ssh login takes 2+ minutes
23:47:00 <mrvn> (10 years ago where keys where short)
23:48:00 <geist> hmm, i wonder if gcc effectively avoids using them if you compile for 060
23:48:00 <geist> probably, should just consider them unavailable
23:48:00 <mrvn> Should. Fixed code that doesn't use them only takes a second to log in via ssh
23:48:00 <geist> since any fallback software version by default is faster than trapping and emulating
23:49:00 <geist> and yeah ssh is always fun to use on older architectures. i usally enable telnetd on machines running old stuff like that
23:49:00 <mrvn> Still sucks that you need 4 16x16=32 muls and some adds to emulate it.
23:49:00 <geist> logging into an old sparc or vax box takes a minute or so, yeah
23:49:00 <geist> and then burns ilke 30% of the cpu in ssh just to watch top or so
23:49:00 <mrvn> makes you miss telnet
23:50:00 <geist> and forget using it for rsync or whatnot
23:50:00 <geist> used to be in the day you could specify the none cipher in ssh, but i think nowadays the best you can do is arcfour, which i measured at some point as being the fastest you can get on old hardware
23:50:00 <mrvn> Is blowfish or so really that slow on sparc?
23:50:00 <geist> yah, or really any old say 50mhz machine you feel it
23:51:00 <geist> it's enough that you can use it as a shell, for sure, but its burning a fairly large amount of cpu to do it
23:51:00 <mrvn> The login has to handle the full 4096 bit key and that is really slow. But the session keys aren't that big.
23:51:00 <geist> may be say 100KB/sec if you try to rsync throough it or whatnot
23:51:00 <mrvn> ouch
23:52:00 <geist> OTOH, those machines usually had 10mbit eth anwyay, so it's not like you were going to get much past 1MB/sec
23:52:00 <mrvn> I think my 68060 was quite a bit faster.
23:52:00 <geist> maybe. i think a 50mhz supersparc or whatnot would be competitive
23:52:00 <geist> and at least had 64bit muls
23:52:00 <geist> it's more like modern ciphers just are very heavyweight for old machines. blows their i/dcache etc
23:53:00 <mrvn> I have a 10MBit card with BNC. So I need my 10MBit HUB with BNC and TP ports.
23:53:00 <geist> yah i keep around one old 10mbit hub for exactly this purpose
23:53:00 <geist> but all old 10mbit nics i have in old machines one way or another have at least an AUI port, so i tend to just use one of those
23:53:00 <geist> i'mn not sure where my old bnc cables are anymore
23:54:00 <mrvn> At least I think it is a HUB. It only has the BNC and one TP port in use.
23:54:00 <geist> might just be a bnc to tp bridge basically
23:54:00 <mrvn> AUI? As in those big, wide 25pin connectors with thick cable?
23:54:00 <geist> AUI as in the little i dunno 8? 10? pin connector that you plugged a box into with TP on it
23:55:00 <mrvn> That's how I use (used) it. It has 1 BNC and 8 TP ports.
23:55:00 <geist> ie, you provide the PHY in a little box. about the size of a cigarette pack
23:55:00 <geist> these things
23:55:00 <geist> i have precisely that model that i grabbed off ebay for the vaxstation
23:56:00 <mrvn> Last time I used AUI was at university wiht thick ethernet in the corridor and then AUI outplets in the rooms. You remember thick ethernet where you had one long cable and then jam a spike into it to connect to the wire in the middle anywhere you needed?
23:57:00 <geist> yah. i dont remember it, but i do know they existed
23:57:00 <geist> thicknet ethernet i think, vs thinnet which is the bnc based one
23:57:00 <mrvn> Nice big colliusion domain
23:57:00 <geist> only place i ever had thinnet is we had some bnc with T joints at the Be office for one of the rows of cubicles
23:58:00 <geist> even at the time (1999) it was cheesy, but someone had laid it down before and you could plug into it if you wanted
23:58:00 <geist> but there was also some rj45 dragged along the wall later
23:58:00 <mrvn> With BNC don't forget to ground it at exactly one place. A 300m cable with 12V charged up gives you quite a jolt when you touch it.
23:59:00 <mrvn> Somehow all the NICs always leak electrons onto the wire.
23:59:00 <geist> yah