On Wed, Jul 02, 2025 at 05:23:09PM -0800, Patrick Steinhardt wrote: > On Wed, Jul 02, 2025 at 07:42:44AM -0700, Carlo Marcelo Arenas Belón wrote: > > In BSD systems other than macOS, since 9806f5a7bf (gc --auto: > > exclude base pack if not enough mem to "repack -ad", 2018-04-15), > > sysctl() use HW_PHYSMEM with the wrong size for the target. > > > > Use the correct type for physical_memory on each option and make > > sure it is initialized, so it is safe to use even if sysctl() fails. > > We don't use it though when sysctl(3) fails, do we? We only return > `physical_memory` in case sysctl(3) returned zero, which indicates > success. Which raises the question whether that function ever returns a > zero value without writing the value to the pointer. > > Not that it would really hurt to initialize the value, but I found this > explanation to be puzzling. Correct; the issue I was trying to address with the initialization was that the function would return 0, but if there is a size mismatch between the variable used and the size of HW_PHYSMEM then the other half of the variable was used uninitialized. Initializing it, "solves" the problem by making sure that (at least in little endian) boxes the result was still valid. Carlo