gettimeofday((void *)-1, NULL) implicates core dump on recent FreeBSD 11-CURRENT

Oliver Pinter oliver.pinter at hardenedbsd.org
Wed Jul 8 10:36:16 UTC 2015


On 7/8/15, Konstantin Belousov <kostikbel at gmail.com> wrote:
> On Wed, Jul 08, 2015 at 11:53:39AM +0200, Oliver Pinter wrote:
>> On 7/8/15, O'Connor, Daniel <darius at dons.net.au> wrote:
>> >
>> >> On 8 Jul 2015, at 08:11, Garrett Wollman
>> >> <wollman at hergotha.csail.mit.edu>
>> >> wrote:
>> >> Perhaps the test was (erroneously) written to assume that
>> >> gettimeofday() was a system call, and could therefore detect invalid
>> >> pointers and return [EFAULT].  This has not been the case for some
>> >> time.  (In HEAD, not since r237434, which is three years ago.)
>> >
>> > In defence of the test, the man page says it can return EFAULT.
>>
>> That's fine, but why changed the behaviour since 2015. May 27.? I have
>> an older FreeBSD/HardenedBSD install, where this test passing. See
>> some previous email in this thread.
> Current implemention detail is that gettimeofday(-1) causes SIGSEGV
> if kern.timecounter.hardware=TSC-low and kern.timecounter.fast_gettime=1.
> If you timecounter changed for whatever reason, the result of that
> call would fluctuate between EFAULT and signal.

Thanks Konstantin! Yes, the systems defaults to TSC-low.

root at nyi-01 ~# sysctl kern.timecounter.hardware
kern.timecounter.hardware: TSC-low
root at nyi-01 ~# sysctl kern.timecounter.fast_gettime
kern.timecounter.fast_gettime: 1
root at nyi-01 ~# sysctl kern.timecounter.choice
kern.timecounter.choice: TSC-low(1000) ACPI-fast(900) HPET(950)
i8254(0) dummy(-1000000)

Changing to HPET solves the problem:

root at nyi-01 ~# sysctl kern.timecounter.hardware=HPET
kern.timecounter.hardware: TSC-low -> HPET
root at nyi-01 ~# cd /usr/tests/lib/libc/sys
root at nyi-01 sys# kyua test gettimeofday_test


gettimeofday_test:gettimeofday_err  ->  passed  [0.011s]
gettimeofday_test:gettimeofday_mono  ->  passed  [0.012s]

Results file id is usr_tests_lib_libc_sys.20150708-103338-126124
Results saved to
/root/.kyua/store/results.usr_tests_lib_libc_sys.20150708-103338-126124.db

2/2 passed (0 failed)


>
> This is not the only test in the test set which checks something that
> cannot be reasonably explained.
>
>>
>> >
>> > (IMO the man page and test should change..)
>> >
>> > --
>> > Daniel O'Connor
>> > "The nice thing about standards is that there
>> > are so many of them to choose from."
>> >  -- Andrew Tanenbaum
>> > GPG Fingerprint - 5596 B766 97C0 0E94 4347 295E E593 DC20 7B3F CE8C
>> >
>> >
>> _______________________________________________
>> freebsd-current at freebsd.org mailing list
>> http://lists.freebsd.org/mailman/listinfo/freebsd-current
>> To unsubscribe, send any mail to
>> "freebsd-current-unsubscribe at freebsd.org"
>


More information about the freebsd-current mailing list