On Tue, May 26, 2020 at 4:52 PM Jason A. Donenfeld <ja...@zx2c4.com> wrote: > With regards to your crash, though, that's a bit more puzzling, and > I'd be interested to learn more details. Because these structs are > already naturally aligned, the __packed attribute, even with the odd > nesting Matt had prior, should have produced all entirely aligned > accesses. That makes me think your kaboom was coming from someplace > else. One possibility is that you were running the git tree on the two > days that I was playing with uint128_t, only to find out that some of > openbsd's patches to clang miscalculate stack sizes when they're in > use, so that work was shelved for another day and the commits removed; > perhaps you were just unlucky? Or you hit some other bug that's > lurking. Either way, output from ddb's `bt` would at least be useful.
Do you know off hand if we're able to assume any type of alignment with mbuf->m_data? mtod just casts without any address fixup, which means if mbuf->m_data isn't aligned by some other mechanism, we're in trouble. But I would assume there _is_ some alignment imposed, since the rest of the stack appears to parse tcp headers and such directly without byte-by-byte copies being made.