<div dir="ltr"><div dir="ltr"><br></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Thu, Aug 25, 2022 at 3:24 AM Rob Landley <<a href="mailto:rob@landley.net">rob@landley.net</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">On 8/24/22 19:31, enh via Toybox wrote:<br>
> I don't know why we get away with this on Linux, but macOS really<br>
> means business with the "values of objects of automatic storage<br>
> invocation duration that do not have the volatile type and have<br>
> been changed between the setjmp() invocation and longjmp() call are<br>
> indeterminate" thing, leading to bad fds and a bad pid.<br>
<br>
Their setjmp() isn't annotated with attribute((__returns_twice__)). Musl had<br>
that problem with vfork() once upon a time. Rich fixed it:<br>
<br>
  <a href="https://landley.net/notes-2017.html#03-02-2017" rel="noreferrer" target="_blank">https://landley.net/notes-2017.html#03-02-2017</a></blockquote><div><br></div><div>checking the setjmp.h on this mac i see that you're right. we found and fixed that in bionic long enough ago i'd forgotten about it. but double-checking just now, i see we didn't do it for sigsetjmp()...</div><div><br></div><div>/facepalm</div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
Sigh. Applied. (And then I patched on top if it because TT starts zeroed so you<br>
don't need to set fd[0] to 0. Don't think I broke anything but can't test mac.)<br></blockquote><div><br></div><div>yeah, ToT still works for me. thanks!</div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
> Using<br>
> volatile causes lots of warnings about passing `volatile int*`<br>
> instead of `int*`, so it's a smaller change to move the fields into<br>
> TT (and avoid the "automatic storage" part) than it is to add the<br>
> `volatile` modifier.<br>
> <br>
> Four timeout tests fail on macOS (both locally and on github's CI)<br>
> without this patch, and all timeout tests pass on macOS with this<br>
> patch.<br>
<br>
Got it. I still consider this a mac bug, but technically it's "lack of<br>
longstanding gcc extension use in their libc". Roughly on the level of not<br>
having the empty (x ? : y) extension...<br></blockquote><div><br></div><div>i'd file a bug against apple, but my experience has been that they never look at a bug, and just close everything out once a year when they ship a new release without having run your repro case (but if someone else wants to...).</div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
(Someday, the C standards committee may catch up, but I expect Planck's<br>
principle to be involved if so.)<br>
<br>
Rob<br>
</blockquote></div></div>