00:00:56 okay so it seems that it would write them out "occasionally," for some meaning of occasionally 00:02:05 in practice, every mounted filesystem has a syncer thread, which schedules writing of every dirty page belonging to that filesystem at appropriate intervals, so that the disk copy of the data doesn't get too stale 00:02:18 this is in addition to the pager's activity of reclaiming pages 00:03:03 right, makes sense. 00:03:08 this is because if you mmap a file and keep writing to it, you usually want those changes written out in the background even if the system is under no pressure to free up memory 00:03:23 you can use MAP_NOSYNC to disable this behavior, btw 00:04:24 the syncer thread also ensures that filesystem metadata is pushed out to disk in cases where it didn't need to be immediately written 00:06:48 but, just to be clear, when doing regular file i/o, there are no more block devices and so the file i/o would not use this unified VM cache and instead it would be send straight to the disk, correct? 00:07:00 no 00:09:26 this is slightly complicated by the fact that although the old buffer pool was eliminated, the buffer _headers_ for it were not, they just now point to VM pages usually 00:10:05 very broadly speaking, what happens if you do a write() call to an open file on a UFS filesystem is something like this: 00:11:19 the write call goes through the file table and the vnode table and arrives at ffs_write, which repeats this sequence: 00:12:44 allocate a buffer header, ask the VM to populate it with existing data if this is an unaligned write, move data from userspace into the buffer, 00:13:39 then tell the buffer management code to possibly schedule a write (immediate write, async write or delayed write depending) 00:13:54 and repeat until no more data is to be moved 00:14:56 but the point is that the buffer headers don't point to some different part of memory, but rather the _same_ memory pages that would be mmapping the file if it is mmaped 00:15:35 so e.g. if you mmap a file that was previously written to, the mmap will just map in the already-existing pages, it won't try and copy anything 00:15:51 the buffer header management code works in coordination with the VM system 00:18:06 it indeed does sound quite "unified." :) 00:18:41 obviously a fair amount of how this works is up to the filesystem code 00:19:06 so for example ZFS does its own thing which is likely to be somewhat different 00:19:18 (which has led to bugs in edge cases) 00:24:02 the main thing to remember is that because it's all unified, there's no expectation that memory will be "free" on a system with any noticable amount of activity 00:24:24 and also, if you look at something like this from top(1): 00:24:29 Mem: 2432K Active, 3593M Inact, 3660K Laundry, 510M Wired, 165M Buf, 263M Free 00:25:08 you shouldn't assume that any of those correspond to either application memory or filesystem cache, almost all of the categories are a mix of both 00:26:03 right, because it reflects the unified VM values 00:26:08 in that particular example, most of the "Inact" category will be file data 00:26:49 but under different kinds of workloads, you might have a large Inact queue containing mostly program memory 00:27:38 the Active / Inact / Laundry distinction is based on whether the data has been recently touched or dirtied, not on what kind of data it is 00:28:15 There are some optimizations specific to files. for example, file read()/write() calls can be detected as being sequential, and optimized accordingly 00:31:49 with freebsd having only raw (unbuffered) disk access and not block (buffered) disk access, how does that relate to the unified VM? does the raw access bypass the unified VM, or do the pages just not stick around in the unified VM as long as the buffer cache did, or are raw accesses actually buffered? 00:32:33 if you write to the /dev/da* (raw) device using write(), those writes are both completely unbuffered and also synchronous 00:33:19 (i.e. the write() call doesn't return until the hardware has said the write is complete - bear in mind the hardware may be lying about that) 00:34:36 does "unbuffered" refer to bypassing the unified VM? 00:34:40 yes 00:35:03 this is why for example when copying an image file to a usb drive using dd, one should use bs=128k or so 00:35:29 (otherwise it will be much slower than necessary) 00:38:07 does this mean that the unified VM is only involved in file i/o when the file is mmapped, but not when you use, say, read/write while the filed is not mapped? 00:38:27 s/filed/file 00:38:49 no, it means that the unified VM is involved in all _filesystem_ I/O, but not to accesses to /dev/* 00:42:43 when you say "filesystem i/o" are you referring to only the directory structure/metadata/etc of the filesystem and not to the data of the files? 00:43:55 no, I mean all access that goes via a filesystem, including the file data 00:45:04 because if file i/o is always unbuffered due to lack of block devices, and "unbuffered" refers to bypassing the unified VM, then I don't see how file i/o would go through the unified VM 00:45:10 i.e. writing to /home/andrew/myfile is filesystem access, but writing to /dev/da0 is not 00:45:46 I literally just explained to you how writing to a file goes through the unified VM 00:47:19 okay, I think I see what you're saying 00:47:44 there are only two common cases where the lack of block devices makes a difference. One is when you copy data to/from raw devices using dd, for example to make disk images or boot media 00:47:58 the other is when porting FUSE filesystems from linux 00:50:37 okay so it sounds like the old buffer cache cached data after it was written to disk, but the new unified VM cache caches data after it's written to the file system 00:51:23 so it basically shifted where it was in the processing pipeline (and got unified with the page cache, of course) 00:51:51 so file i/o is still cached, just not at the same point 00:52:21 well the old-style cache didn't cache only after writing, it was a writeback cache 00:53:48 right 00:58:26 thanks for the information, it's been very helpful 00:59:48 also bear in mind that the "new" unified VM has been around for, I think, at least as long as I've been using FreeBSD 01:00:07 which is over 26 years now 03:59:39 where can I find doc on how to configure ipv6 DHCP ? 04:37:06 got a kind of urgent one if anyone is around... 04:37:17 ? 04:37:22 BTX loader ("1.00") BTX Version 1.02 04:37:34 Any way to make it NOT probe a bad disk and wait? 04:37:45 oof, old-style 04:38:05 sec 04:38:22 Like I know if I get to the next stage (beastie menu) there's lots to do, but I'm stumped on this. 04:38:37 which disk is dead? 04:38:38 I don't even need the bad drive to function, I know it's bad. 04:38:54 It's part of an old zfs pool that's all HDDs. 04:40:31 It's reading out all the drives OK (2 boot SSDs, 2 HDDs on one SATA controller - 4 SSDs on the other), but the part where the spinner should be spinning, it's spinning like 1 notch every 15 minutes. 04:40:35 what messages have come up before it hangs? 04:41:25 ie: https://i.imgur.com/rl3BlNT.png 04:41:29 That's it... 04:41:49 The BIOS alerts me that one of the drives is marked bad by SMART (which I know). 04:42:16 can you disable the drive in the bios? that should be enough 04:42:45 BTX is a dos-extender, i.e. it's still actually using the bios for doing i/o 04:43:04 (you might then have to use the loader prompt to stop the kernel from accessing it) 04:44:18 Is there a prompt for BTX? I'm really fuzzy on it these days. 04:44:50 Also dug through the BIOS and was not seeing a way to disable a drive - I could set hot swap on/off, set drive type to SSD/HD and that's it. 04:45:45 pretty sure there's no way to get to a useful prompt before loader is up 04:46:05 how many drives are there and which one is bad? 04:46:29 (I see there are 8 in the list, is that all of them?) 04:46:34 8 drives and I'm not sure which one maps to which drive letter 04:47:34 ok, so the fact that it prints the list means that it probed all the drives 04:47:38 I'm torn between waiting it out and going back into the BIOS 04:48:09 This is the first boot into 12.4 - just did a freebsd-update from (cough) 12.2. 04:48:23 so it's hung at some point after bd_init, probably at the point where it tastes all the disks it found 04:48:26 And of course, the host is remote, so I can't physically pull the problematic drive. 04:48:50 was it booting ok under 12.2, or had it been up for a long time? 04:50:05 /* XXX this gets called way way too often, investigate */ 04:50:13 gotta love comments like that 04:50:41 Up for about 4 months - last boot was a zfs scrub having issues with this same drive and it paniced a few times. 04:50:47 fortunately that's not the problem 04:51:02 ok, so the drive was known-bad from way back 04:51:08 It came up OK post-panic, then after I moved everything off the bad pool, I manually rebooted w/o issue. 04:53:02 hm 04:53:14 so it didn't get as far as printing the memory size 04:53:38 which is literally the line after devinit(); so that's where it hung? 04:56:43 so the next probe after that is vdisk_dev, which is probably not doing anything, 04:56:47 hold on, just rebooting again to get into bios and dig 04:56:51 but then the next one is zfs_dev 04:57:09 It was still at the same spot as that imgur png above (if you saw that) 04:57:30 so it looks like it's the point at which it tries to figure out the available zpools that's the problem, not unexpected 04:57:59 I'm not seeing any way to disable individual disks before that point. 04:58:09 Kind of a not great design to have the thing that's necessary to boot have no config... 04:59:43 well it does have a config, it's just that it wants to know what devices it has before doing a prompt 05:00:13 and without UEFI, it's a bit constrained on functionality 05:00:50 the host has UEFI, but never set it up on the FreeBSD side (not that I know how) 05:01:05 https://i.imgur.com/dV1etKc.jpg - sata setup it's the first HGST 05:02:34 no option anywhere to disable that data port entirely? 05:03:15 nope - I've got spinup (which is actually spinup delay enable/disable) and hot swap yes/no 05:03:53 Oh, the kicker? Boot drives are UFS. 05:04:31 Sadly my ssd pool goes across the two built-in controllers, so if I disable my SATA controller with the HDs on it, I then have another pool not working. 05:06:29 I'm digging through the code, but I'm not seeing any good solution yet 05:09:11 I hate The Cloud, but I do like "hardware is someone else's headache". 05:10:05 so zfs_probe probes every partition on every physical disk, and I don't see any way to exclude anything 05:10:42 (and it doesn't print anything until they're all done) 05:11:57 I wish I could know whether it's just probing very slowly or if it's just locked itself up. 05:12:10 The cursor under the spinner blinks and the host does reboot with ctrl-alt-del. 05:13:50 there are no keyboard commands here right? Like you can't cancel out or anything. 05:15:14 Well, I'm going to let it try booting, eat dinner (yes 1 a.m.), pull backups for two things that aren't redundant, and slap them elsewhere and then see about remote hands. 05:16:05 I don't see any keyboard interaction. 05:16:41 the zfs code isn't even calling twiddle() anywhere i can see, which explains why it isn't spinning 05:16:56 ugh 05:17:07 Would I be in this mess with UEFI? 05:17:52 I believe that with UEFI you'd have more chances to disable the drive before getting into the loader. but it would depend on the UEFI implementation 05:18:44 Is the BTX loader still used in UEFI boot or no? 05:18:55 not the BTX version, no 05:19:20 it's the same loader, but using UEFI services to scan and access the hardware rather than the legacy BIOS 05:20:30 the UEFI environment potentially allows executing other programs before booting, but I haven't experimented with it much 05:20:46 (other than under bhyve, which has a very minimal UEFI) 05:23:03 Hmmm, interesting. 05:23:46 I really appreciate you digging through all this stuff, I'm so rusty. I started back at FreeBSD 2.1.6 or so. 05:23:58 me too :-) 05:24:09 it doesn't even have boot options, does it (bhyve uefi) 05:24:22 but I've been using fbsd as my main desktop and development environment ever since 05:24:58 ixmpp: last I looked it had no support for persisting any variables between boots 05:25:14 ixmpp: also, I think it lacks a shell 05:25:21 very minimal indeed 05:26:00 it can load and run bootx64.efi and that's about all 07:50:30 RhodiumToad: https://i.imgur.com/ZpvBlpv.jpg it has printed "ZFS: can't find vdev details" 3x, about once/hour. 07:50:57 and it just booted it seems! 08:49:06 every time i try building with poudriere my pc freezes lol. i tried to limit the memory in poudriere.conf to a low number..does it not care if the host runs out of memory? 08:49:34 i.e should i be shutting all my programs and making sure the host doesn't use any memory while the jail builds stuff? 08:53:10 hehe froze again 09:05:47 trev: that sucks 09:05:59 wait. 09:06:13 just poudriere, or ports in general? 09:18:59 trev: can you throw your poudriere.conf in a pastebin, and tell us a bit about your system (number of threads according to sysctl -n hw.ncpu, amount of memory, et cetera)? 09:19:34 Also, what sort of things are you building? Does the graph include llvm/gdb, and things like Firefox or Chromium? 09:20:45 s/gdb/gcc/ 09:22:05 By default poudriere will use one job per builder jail, but if you've overwritten that in order to get compilers or browsers to build faster, it's not impossible that you're ending up with only half a GB of memory per thread (which isn't a lot, when doing multi-threaded compiling). If on top of that you're putting all your artifacts (ie. distfiles, workdir, object files, et cetera) in tmpfs, that's even 09:22:11 more memory contention. 09:42:01 meena: seems work on regular ports builds 09:42:11 i am trying to build kitty terminal 09:42:32 but honestly trying to build it makes me want to not use it cause it is a bloated mess 09:42:56 i reduced tmpfs to 1GB 09:43:36 and gave 8GB poudriere under MAX_MEMORY 09:44:50 debdrup: let me pastebin for you 09:48:28 debdrup: https://termbin.com/qxo3 09:48:58 ignore the neofetch on the bottom. i though that would work to show system specs but it's just a mess 09:49:52 just do `head -n30 /var/run/dmesg.boot` 09:52:24 https://termbin.com/fzfs 09:53:16 MAX_MEMORY and TMPFS_LIMIT are both per-jail, and with 4 threads that means you need 36GB memory. 09:53:45 -_- 09:53:57 So yes, you're having severe memory contention. ;) 09:54:15 Poudriere is meant to run on build servers with hundreds of GB of memory. 09:54:53 good to know...i just wanted to keep my system clean and then wipe the jail after the build :\ 09:57:38 let's try again with lower numbers 09:57:43 if i leave then you know i crashed :') 09:58:24 Does your system have swap? You might be able to get away with halving MAX_MEMORY. 09:58:34 Swap on an NVMe SSD, I mean. 10:00:55 no not on nvme 10:01:03 just regular sata ssd 10:05:23 welp 10:07:23 instant freeze again 10:07:53 some people aren't just meant to be a beastie 10:08:01 I see that the CPU isn't exactly new; is it possible that you need to reapply the thermal grease, because the CPU is overheating? 10:08:35 Typically FreeBSD won't freeze when it's running out of memory, it'll just start killing processes that take up the most amount of memory. 10:09:36 ey.... please... a bit of respect. 10:10:23 https://cgit.freebsd.org/src/tree/sys/vm/vm_pageout.c#n1900 this is the code that handles OOM, and it's pretty good at it. 10:10:25 Title: vm_pageout.c « vm « sys - src - FreeBSD source tree 10:11:38 could be the case, but i am able to build other software 10:11:49 ugh 10:12:16 unless freebsd can't control my fans 10:12:18 so regarding powderkeg, I should use a sacrificial nvme instead of tmpfs? 10:12:24 Well, I've no real answers for you, other than that you're still probably contending on memory. 10:12:43 If FreeBSD can't control your fans, the CPU has its own fan control that takes o ver. 10:13:01 Ellenor: I've no idea how you came to that conclusion. 10:13:44 See my comment about poudriere being built with the assumption of a LOT of memory available. 10:14:47 ah 10:15:59 Swapping to an NVMe SSD _can_ make it possible to go a little over - ie. trev has 16GB system memory and, I assume, 16GB swap, and 4x(4+1)=20GB as the maximum memory that the builders+tmpfs can take up. 10:16:28 Hm. 10:16:33 It's not gonna as fast as it could be, but FreeBSD shouldn't be freezing from it. 10:16:37 aye. 10:52:40 trev: you can blacklist certain packages from putting wrkdirs in tmpfs 10:52:59 I do this for rust because my poudriere VM has 16 GB RAM 10:53:14 sure it slows the process down but at least there is no oomkilling going on 11:26:33 <_xor> Oooooh, this looks pretty cool. Going to have to check this out... 11:26:36 <_xor> https://github.com/ast-grep/ast-grep 11:26:37 Title: GitHub - ast-grep/ast-grep: ⚡A fast and easy tool for code searching, linting, rewriting at large scale. Written in Rust 11:36:14 "You can install it from npm or cargo!" 11:37:06 why on earth would i want to install anything from npm, if i don't absolutely have to? 11:37:34 devops. 11:39:39 * meena got stuck in Puppet being DevOps, and hasn't made it into JavaScript or Kubernetes being DevOps 11:41:06 Remilia: i turned tmpfs off 11:41:18 also, is there just a public repo of ports that i can just use to get bins? 11:41:42 cause i don't have a good enough build machine i guess 11:42:05 pkg install 11:42:31 meena: we went over this before... 11:42:40 it's not in the pkg repo 11:43:32 i have very short memory 11:43:45 am i missing something though? 11:44:10 unless I'm actually involved, it gets swapped out very quickly 11:44:29 you were trying to build kitty terminal? 11:44:32 yeah 11:45:12 Not sure how anything JS specifically constitutes DevOps 11:45:24 DevOps is just a means to an end, and is relatively tool agnostic 11:45:33 You could make an entire devops flow with zfs and Make if you wanted to 11:45:37 "devops flow" 11:45:58 s/zfs/zsh/g 11:47:06 nah, I want the other one. zfs. we store data in zfs props 11:47:55 i had a setup with GNU make, that provisioned VMs long before discovering Puppet 11:48:13 I have strong opinions about Puppet, but they're probably several years out of date 11:48:16 trev: poudriere supports fetching binary packages for dependencies using the -B flag, if memory serves. 11:48:32 That way you only use poudriere to build the package that you're looking for. 11:48:37 I like the idea of storing releases in ZFS snapshots or similar though, and doing a blue/green release gradually over a fleet. 11:48:40 Feels like a summer project 11:49:37 https://portsfallout.com/fallout?port=x11%2Fkitty%24 seemms like there's fallout for kitty though, so I'm not sure that'll work. 11:49:39 Title: Fallout list - FreeBSD pkg-fallout 11:49:43 (Make is awesome for that kinda thing because it's idempotent, or can be, if you write it correctly) 11:51:01 debdrup: and the error is not in kitty 11:51:04 trev: https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=270871 11:51:06 Title: 270871 – x11/kitty fails to build with invalid UTF-8 in comment using poudriere on stable-13.2 amd64 11:51:20 i know this bug, but i think it's patched already 11:51:21 Remilia: nonetheless, this is exactly what the bugzilla is for 11:51:34 my ports have the latest patch 11:51:42 maybe the ports in my jail don't... 11:52:14 https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=270703 this is the update, which mentions nothing of the bug as far as I can see 11:52:16 Title: 270703 – x11/kitty: Update to 0.27.1 11:54:23 ah yeah, correct 11:54:28 So this appears to have been an XY problem all along. 11:54:37 oh well. i've spammed the chat with this crap enouhg 11:54:42 i will just use st 11:54:51 * debdrup uses alacritty and is very happy. 11:55:09 * trev needs ligatures or will become depressed 11:55:28 Ligatures is a font thing, nothing to do with the terminal emulator. 11:56:44 heh..try it then 11:57:09 it was a controversial topic on the alacritty repo 11:57:15 * debdrup shrugs. 12:07:50 trev: Irrespective of that, it's always a good idea to precisely state what you're doing, and to iterate it if the conversation seems to drift off. 12:08:21 XY problems aren't ever going to go away, but that doesn't mean we can't try to reduce them. 12:09:28 I wasn't privy to the prior conversation (or don't remmeber it because of chemobrain), so you trying to build it and running into memory contention issues from less-than-optimal configuration seemed like the problem whereas what you were actually struggling with is a bug that's already been reported. 12:10:07 debdrup: true. i should have looked harder for current issues with kitty. i am new to freebsd and a bit overwhelmed, while trying to rush to get things set up in my free-time. need to read more 12:10:37 trev: that's fine, we all start somewhere. I have a few hints though, since you're new. 12:11:30 If something in ports/packages is broken, going to https://www.freshports.org/x11/kitty/ (using kitty as an example) will present you with a bunch of icons next to the version and category (under the name and short description) 12:11:31 Title: FreshPorts -- x11/kitty: Cross-platform, fast, featureful, GPU-based terminal emulator 12:11:57 these are quick links to find dependencies, find bug reports, and find ports fallout (ie. if something is broken, you can locate the logs) 12:12:24 Hovering over the icons should tell you exactly what they do 12:14:17 That might help you ask better questions :) 12:14:41 If you ever need to file a bug report, https://docs.freebsd.org/en/articles/problem-reports/ is invaluable. 12:14:42 Title: Writing FreeBSD Problem Reports | FreeBSD Documentation Portal 13:17:18 thanks debdrup! 15:54:05 Oh, in case anyone was wondering, in talking about scrypt in crypto(9) to replace PKCS#5, Colin brought up the excellent point that in the loader environment, there isn't a whole lot of memory available (especially not on BIOS+MBR systems, but it's not exactly great in UEFI+GPT+ESP land either). 16:16:58 meka: your blog appears to have 404'd. 18:03:16 i wonder if you can build vnet transport on top of https://man.freebsd.org/vale(4) for interconnecting local jails 18:03:17 Title: vale(4) 18:16:41 meena: I've wished someone would do that for.. at least 10 years. 18:25:57 how hard can that be?? 18:26:23 * meena slaps that on her very short TODO list 18:27:00 the TODO list starts with tidy my daughter's room, and goes sharply down hill from there 18:42:45 meena: such TODO lists are best kept separate -- things I enjoy (BSD, food, reading), another for things I have to do quickly but do not enjoy (cleaning daughter's room, lawn work) -- good luck 18:56:09 coreystephanphd: hi dr. corey. big fan here. every time i read/watch your work i wonder how this guy does all that he does! 20:00:40 sooo... for sanity checking purposes, is there any reasonable upper bound for what anyone might set kern.maxfilesperproc to? 20:03:59 gotta love code where the comments totally disagree with the actual logic 20:04:24 "At most it can be 1/6 the number of physical pages." if (maxfiles > (physpages / 4)) maxfiles = physpages / 4; 20:04:39 hint, 4 and 6 are not the same number :-) 20:07:31 hm, are there systems with >=8TB of RAM around in the wild? 20:09:01 because with 8TB, maxfiles = imax(MAXFILES, physpages / 8); isn't going to do the right thing 20:29:52 hi folks! Can anyone have a look at this? I think I'm getting stupid. Or huge bug in "ls" –> https://dpaste.org/gavd6 20:29:53 Title: dpaste/gavd6 (Plain Text) 20:47:57 I suppose ls refers to which filesystem item to stat when talking about "reference". stat can be used to find out the actual referenced file. 20:50:22 use the -l option as well as -L 20:52:02 if you're confused by the name not changing, that's because the name is always what you specified on the command line (or read from readdir) 20:54:15 "ls shall write the name of the link itself and not the file referenced by the link." posix description for -H 20:54:48 (part of, if you are asking why it shows the link and not the file it points to) 20:55:11 same for -L 20:56:43 (if you think about it, the purpose of `ls` is to list what the names are _in that directory_, so it would make no sense to list the target name) 20:57:20 (yes, in this case the target is also in the same directory, but that's a special case - in general, symlinks can point anywhere) 21:01:26 trying to remember which awful #unix channel i used to hang out in which had an FAQ that started with: I just discovered a huge bug in rm! — no, you didn't. 21:16:56 hrm… bhyve can work with vale 21:17:59 trev That means a lot -- thanks :) 21:23:24 RhodiumToad: in the wild is a relative term. Yes, vendors do claim they can sell you a system, but if you ask for a price you can't afford it. 21:25:42 yeah, I'm just looking at code in the kernel that goes to UB when memory exceeds some threshold, and wondering if anyone ever hit it 21:26:51 I've seen one system with 2TB memory. 21:26:58 so far, the worst assumption I've found is that physpages / 4 fits into a signed 32-bit int, which would break at 4TB 21:27:32 er, 8TB 21:27:35 I think mjg is likely to run into it first, with his attempts to make things scale. 21:27:55 no wait, 2TB 21:28:27 eurgh, can't calculate today 21:29:23 8TB in 4k pages makes physpages not fit in signed 32 bits, which is ok because physpages is stored as a long 21:29:45 16TB would make physpages / 2 overflow a signed int 21:30:31 so 32TB is the point at which the worst assumption I've seen so far would break 21:32:50 RhodiumToad: I guess that's just one more sign that `ls` is a CLI tool, not one for scripts. 21:33:33 michelem: why so? 21:34:16 (admittedly in scripts it's often the wrong tool) 21:35:03 what is confusing there is that all arguments (-L -H -P) have different symlink-specific semantics but produce the same output. Their description is ambiguous enough to allow thinking otherwise, and that's compounded by the fact that `ls` does list extra-dir information with `-l` . `-l` is not a usable parameter for scripting though. Indeed, `stat` is the tool for that. low-level, but never disappoints. 21:35:37 they only produce the same output in cases where you're not actually asking for any information beyond the filename which you already know 21:37:19 thanks for looking into it and for your friendly and competent answer. 21:37:45 though when the link is to a directory you'll see more significant differences 21:41:13 Hmphm. Tried searching dmesgd for 2199023255552 to find the system I thought I remembered, but either that's wrong or I remember wrong. 21:43:12 RhodiumToad, "Actually, finding a disagreement between the comment and the code tends to mean both are wrong" - Steve McConnell. 21:43:31 yeah, I know :-) 21:44:23 But more often code and comments and consistent, but both wrong 21:50:23 That could be. But the adage I quoted saves you from having to decide which is correct when they differ. 21:51:03 (I'm no longer a software dev. Haven't been for several years.) 22:09:16 I know this isn't a FreeBSD question specifcally, but I'd figure ill throw it outthere to the general public: If i self-sign a certificate for a website, is it normal to get a padlock in the searchbar but still have it say Connection Not Secure? 22:11:28 Yes 22:11:54 But depends on the browser really 22:16:29 Firefox in this case 22:16:38 the browser will throw up the insecure warning page if it can't trace the certificate to something it trusts 22:17:15 obviously a self-signed cert won't pass that test unless you also tell the browser to trust it 22:17:49 these days, of course, you can just use an LE cert instead 22:19:33 royalyork: google letsencrypt. you may get trusted cert for free... , other solution would be create own ca and install ca certificate on browser storage , then just sign your certs with own ca 22:20:31 letsencrypt is the best way to go by far if you expect anyone who isn't you to visit the website 22:21:54 I'll look into that, thanks