[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: FreeBSD bugs
From: |
Ed Maste |
Subject: |
Re: FreeBSD bugs |
Date: |
Tue, 2 Oct 2012 10:30:07 -0400 |
On 1 October 2012 22:50, Bruno Haible <address@hidden> wrote:
> Hi Ed,
>
>> it looks like we're pretty close to having all of
>> the tests apply and pass on FreeBSD so I suspect I don't have many
>> more to find.
>
> Do you know what is the status of the following bugs in the newest
> FreeBSD release? Let me cite the sections of gnulib documentation.
> You find the test cases in the corresponding *.m4 files.
Thanks for the list - here's the current status, on 9.1 prerelease.
It'll take a little while to fully analyze the remaining failures.
> alphasort
> The parameters of this function are declared as @code{const void *} on some
> platforms:
Fixed,
http://www.freebsd.org/cgi/query-pr.cgi?pr=142255
http://svnweb.freebsd.org/base?view=revision&revision=201512
> chown
> Some platforms fail to detect trailing slash on non-directories, as in
> @code{chown("link-to-file/",uid,gid)}:
Fixed - I didn't find the PR or commit, but from configure.log:
configure:14616: checking whether chown honors trailing slash
configure:14653: result: yes
> dup2
> This function returns @code{EMFILE} instead of @code{EBADF} for
> extremely large targets, which interferes with using
> @code{dup2(fd,fd)==fd)} as the minimal @code{EBADF} filter:
Fixed,
http://www.freebsd.org/cgi/query-pr.cgi?pr=164970
http://svnweb.freebsd.org/base?view=revision&revision=234131
> fclose
> On some platforms, this function fails to set the file position of a
> seekable input stream to the byte after the last one actually read:
configure:21795: checking whether fflush works on input streams
configure: program exited with status 4
> fcntl
> This function does not support @code{F_DUPFD_CLOEXEC} on some
> platforms:
Issue is present
> fdopendir
> This function mistakenly closes non-directory file descriptors on some
> platforms:
Issue is present
> fflush
> @code{fflush} on an input stream right after @code{ungetc} does not discard
> the @code{ungetc} buffer, on some platforms:
Issue present, same as fclose above
> fmaf
> This function produces wrong results on some platforms:
configure:47801: checking whether fmaf works
configure:47924: result: yes
> fmal
> This function produces wrong results on some platforms:
configure:48113: checking whether fmal works
configure:48428: result: yes
> fma
> This function produces wrong results on some platforms:
configure:47491: checking whether fma works
configure:47613: result: yes
> *printf
> printf @code{"%010f"} of NaN and Infinity yields an incorrect result (padded
> with zeroes) on some platforms:
configure:17361: checking whether printf supports the zero flag correctly
configure:17406: result: yes
> This function can crash in out-of-memory conditions on some platforms:
configure:17513: checking whether printf survives out-of-memory conditions
configure:17735: result: no
> getdelim, getline
> This function crashes when passed a pointer to a NULL buffer together with a
> pointer to a non-zero buffer size on some platforms:
configure:53720: checking for working getdelim function
configure:53790: result: yes
configure:54487: checking for working getline function
configure:54557: result: yes
> getgroups
> On some platforms, this function fails to reject a negative count,
> even though that is less than the size that would be returned:
Issue present
> lchown
> Some platforms fail to detect trailing slash on non-directories, as in
> @code{lchown("link-to-file/",uid,gid)}:
Fixed, same as chown above
> link
> This function fails to reject trailing slashes on non-directories on
> some platforms:
I didn't find the specific test for this one.
> mkfifo
> This function mishandles trailing slash on some platforms:
configure:69803: checking whether mkfifo rejects trailing slashes
configure:69846: result: yes
> mknod
> This function requires super-user privileges to create a fifo:
configure:69971: checking whether mknod can create fifo without root privileges
configure:70012: result: yes
> This function mishandles trailing slash on some platforms:
Same as mkfifo above
> modf
> This function has problems with infinite arguments on some platforms:
configure:70726: checking whether modf works according to ISO C 99
with IEC 60559
configure: program exited with status 2
> open
> This function does not fail when the file name argument ends in a slash
> and (without the slash) names a nonexistent file or a file that is not a
> directory, on some platforms:
configure:72756: checking whether open recognizes a trailing slash
configure:72807: result: yes
> perror
> This function treats @code{errno} of 0 like failure, although POSIX
> requires that the message declare it as a success, on some platforms:
Not sure this is the test described above, but:
configure:73464: checking whether perror matches strerror
configure:73512: result: yes
> pthread_sigmask
> This function is declared in @code{<pthread.h>} instead of @code{<signal.h>}
> on some platforms:
It's in signal.h
> This function does nothing and always returns 0 in programs that are not
> linked with @code{-lpthread} on some platforms:
configure:76179: checking whether pthread_sigmask works without -lpthread
configure:76219: result: no
> readlink
> Some platforms mistakenly succeed on @code{readlink("link/",buf,len)}:
configure:77747: checking whether readlink handles trailing slash correctly
configure:77782: result: yes
> On some platforms, @code{readlink} returns @code{int} instead of
> @code{ssize_t}:
configure:77720: checking whether readlink signature is correct
configure:77745: result: yes
> realpath
> This function does not allow for a NULL @samp{resolved} parameter on
> some platforms:
configure:13665: checking whether realpath works
configure:13841: result: yes
> remove
> This function fails to reject trailing slashes on non-directories on
> some platforms:
I see REPLACE_REMOVE='1', but don't see a test corresponding to this.
> rename
> This function does not reject trailing slashes on symlinks to
> non-directories on some platforms, as in
> @code{rename("link-to-file/","f")}:
configure:79590: checking whether rename honors trailing slash on destination
configure:79641: result: yes
configure:79650: checking whether rename honors trailing slash on source
configure:79701: result: yes
> scandir
> The fourth parameter of this function is declared as @code{int (*) (const
> void *, const void *)} on some platforms:
I don't see the test, but from the man page:
scandir(const char *dirname, struct dirent ***namelist,
int (*select)(const struct dirent *),
int (*compar)(const struct dirent **, const struct dirent **));
> setenv
> On some platforms, this function does not fail with @samp{EINVAL} when
> passed an empty string or a string containing @samp{=}:
configure:82666: checking whether setenv validates arguments
configure:82704: $? = 0
> stat
> On some platforms, @code{stat("link-to-file/",buf)} succeeds instead
> of failing with @code{ENOTDIR}.
configure:86558: checking whether stat handles trailing slashes on directories
configure:86591: result: yes
configure:86593: checking whether stat handles trailing slashes on files
configure:86638: result: yes
> strerror
> This function reports failure for @code{strerror(0)} (by setting
> @code{errno} or using a string similar to out-of-range values),
> although POSIX requires this to leave @code{errno} unchanged and
> report success, on some platforms:
configure:31836: checking whether strerror(0) succeeds
configure:31876: result: yes
> strerror_r
> This function reports failure for @code{strerror_r(0, buf, len)},
> although POSIX requires this to succeed, on some platforms:
I don't see an explicit test for strerror_r for this, but presumably
fixed as strerror above.
> When the value is not in range or the buffer is too small, this
> function fails to leave a NUL-terminated string in the buffer on some
> platforms:
configure:31937: checking whether strerror_r works
configure:32003: result: yes
> strstr
> This function has quadratic instead of linear worst-case complexity on some
> platforms:
configure:89105: checking whether strstr works in linear time
configure:89190: result: no
> strtod
> This function returns the wrong end pointer for @samp{-0x} on some
> platforms:
> This function fails to parse @samp{NaN()} on some platforms:
> This function fails to correctly parse very long strings on some
> platforms:
configure:89327: checking whether strtod obeys C99
configure:89452: result: yes
> symlink
> On some systems, @code{symlink(value,"name/")} mistakenly creates a
> symlink:
configure:90017: checking whether symlink handles trailing slash correctly
configure:90056: result: yes
> unlink
> Some systems mistakenly succeed on @code{unlink("link-to-file/")}:
configure:109928: checking whether unlink honors trailing slashes
configure:109981: result: yes
> unsetenv
> This function has the return type @samp{void} instead of @samp{int} on some
> platforms:
It's int.
> On some platforms, this function does not fail with @samp{EINVAL} when
> passed an empty string or a string containing @samp{=}:
Hmm, it's actually failing before that now.
configure:110450: checking whether unsetenv obeys POSIX
configure: program exited with status 3
if (getenv ("a")) return 3;
> utimes
> On some platforms, this function mis-handles trailing slash:
configure:34961: checking whether the utimes function works
configure:35086: result: yes