User Details
- User Since
- Jan 29 2016, 5:27 AM (464 w, 14 h)
Sun, Dec 8
Sep 10 2024
Sep 9 2024
Sep 7 2024
Undo damage done in c6d3d601c96f, which shifted failure to allocate large buffer to pipe_create() from pipe_write().
Sep 6 2024
Sep 5 2024
looks unnecessary.
Sep 3 2024
Make harmless.
P.S. I think this whole new "behaviour" is the (unintended?) consequence of the c6d3d601c, which shifted the failure to allocate buffer from the write() call into the popen() call. Which added the whole new failure mode into fork()->exec() mechanism that can be easily triggered by anybody. So no new process can be created even if the new process and/or its parent would never want to write or read to the pipe in a normal conditions.
Aug 30 2024
@kib thanks for the input. Beefed up telemetry, as suggested, removed the reference to tuning. Added option to kill the repeated offender (or an innocent bystander ;-)
Added option to kill Pipe KVA (ab)users.
Aug 29 2024
May 7 2024
@imp thank for looking into this! And cherry-picking stuff to reduce this are totally cool with me. :) I forgot to mention that the "whole-archive" was an empirical workaround for some weird linking "symbol not found issues" with LTO enabled that I could not overcome or explain otherwise. I am not 100% sure if this some deficiency of LTO in lld's version that we have in 13.1 that I was experimenting with and if it fixed in -current. I was planning to setup full fledged -current build environment to see if it's really needed, but it got boggled down by some 3-weeks travelling spree going at the moment (still ongoing).
May 6 2024
Apr 20 2024
@imp I think at one point you would be pulling just the devpath.c from the libsa, but then you gave up and started to pull the whole circus. But it continued to pull that one still. Fixed in the new rev.
- devpath.c needs not to be pulled in explicitly any longer.
Apr 19 2024
Feb 13 2024
@glebius dully noted. 🙉🧐
Feb 9 2024
Feb 8 2024
Looks like I'm able to turn INVARIANTS just in that specific TU, let's see if we deploy it into production and narrow it down:
Crash trace seems to be misleading, based on the crash IP (0xffffffff80664190), the crash is inside m_apply():
Dump of assembler code for function m_apply: 0xffffffff80664100 <+0>: push %rbp 0xffffffff80664101 <+1>: mov %rsp,%rbp 0xffffffff80664104 <+4>: push %r15 0xffffffff80664106 <+6>: push %r14 0xffffffff80664108 <+8>: push %r13 0xffffffff8066410a <+10>: push %r12 0xffffffff8066410c <+12>: push %rbx 0xffffffff8066410d <+13>: sub $0x18,%rsp 0xffffffff80664111 <+17>: mov %r8,-0x38(%rbp) 0xffffffff80664115 <+21>: mov %rcx,-0x30(%rbp) 0xffffffff80664119 <+25>: mov %edx,%r12d 0xffffffff8066411c <+28>: mov %rdi,%rbx 0xffffffff8066411f <+31>: test %esi,%esi 0xffffffff80664121 <+33>: jle 0xffffffff80664140 <m_apply+64> 0xffffffff80664123 <+35>: mov %esi,%eax 0xffffffff80664125 <+37>: cs nopw 0x0(%rax,%rax,1) 0xffffffff8066412f <+47>: nop 0xffffffff80664130 <+48>: sub 0x18(%rbx),%eax 0xffffffff80664133 <+51>: jl 0xffffffff80664149 <m_apply+73> 0xffffffff80664135 <+53>: mov (%rbx),%rbx 0xffffffff80664138 <+56>: mov %eax,%esi 0xffffffff8066413a <+58>: test %eax,%eax 0xffffffff8066413c <+60>: jg 0xffffffff80664130 <m_apply+48> 0xffffffff8066413e <+62>: jmp 0xffffffff80664142 <m_apply+66> 0xffffffff80664140 <+64>: mov %esi,%eax 0xffffffff80664142 <+66>: test %r12d,%r12d 0xffffffff80664145 <+69>: jg 0xffffffff80664190 <m_apply+144> 0xffffffff80664147 <+71>: jmp 0xffffffff80664150 <m_apply+80> 0xffffffff80664149 <+73>: mov %esi,%eax 0xffffffff8066414b <+75>: test %r12d,%r12d 0xffffffff8066414e <+78>: jg 0xffffffff80664190 <m_apply+144> 0xffffffff80664150 <+80>: xor %eax,%eax 0xffffffff80664152 <+82>: add $0x18,%rsp 0xffffffff80664156 <+86>: pop %rbx 0xffffffff80664157 <+87>: pop %r12 0xffffffff80664159 <+89>: pop %r13 0xffffffff8066415b <+91>: pop %r14 0xffffffff8066415d <+93>: pop %r15 0xffffffff8066415f <+95>: pop %rbp 0xffffffff80664160 <+96>: ret 0xffffffff80664161 <+97>: cs nopw 0x0(%rax,%rax,1) 0xffffffff8066416b <+107>: nopl 0x0(%rax,%rax,1) 0xffffffff80664170 <+112>: cltq 0xffffffff80664172 <+114>: add %rax,%rsi 0xffffffff80664175 <+117>: mov -0x38(%rbp),%rdi 0xffffffff80664179 <+121>: mov %r14d,%edx 0xffffffff8066417c <+124>: call *-0x30(%rbp) 0xffffffff8066417f <+127>: test %eax,%eax 0xffffffff80664181 <+129>: jne 0xffffffff80664152 <m_apply+82> 0xffffffff80664183 <+131>: sub %r14d,%r12d 0xffffffff80664186 <+134>: mov (%rbx),%rbx 0xffffffff80664189 <+137>: xor %eax,%eax 0xffffffff8066418b <+139>: test %r12d,%r12d 0xffffffff8066418e <+142>: jle 0xffffffff80664152 <m_apply+82> 0xffffffff80664190 <+144>: mov 0x18(%rbx),%r14d ^^^^^^^^^^^^^^ End of assembler dump.
Different calls chain though, @markj any ideas? 👀
Looks like some other issue at play, I am seeing those crashes even with my patch applied.
Feb 7 2024
o sorted alphabetically;
o updated .Dd.
Jan 22 2024
P.S. popen(3) under the hood uses /bin/sh, so it needs tons of stuff to be present and working. Not to mention having fstat around is not guranteed.
Looks OKish (I never used that feature myself, only for testing), but the fact that this is now runs by default and tries to do bunch of unnecessary magic under the hood is of a big concern. I already have a problem with pkg starting to open /dev/null just in case, I don't want this to cause my builds to start suddenly failing right and left.
Dec 5 2023
May 10 2023
Dec 26 2022
Sep 13 2022
Sep 8 2022
termcap.small is still useful I think for the case when /usr is not mounted (i.e. single-user/recovery mode in a traditional FS layout). These days of course most people are using monolithic root+usr esp with ZFS, however we for example have 200+ systems in the field partitioned in a traditional way, so I am wondering how many there may be people like us out there.