Follow @Openwall on Twitter for new release announcements and other news
[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Date: Mon, 18 Jun 2012 00:49:44 +0200
From: Bruno Haible <>
Cc: Isaac Dunham <>, Paul Eggert <>, Reuben Thomas <>
Subject: Re: musl bugs found through gnulib

[CCing the musl list]
Isaac Dunham wrote in
> musl is designed for standards conformance,

There is a recipe, in <>,
that explains how to use gnulib to check a libc against bugs. When I apply
this to musl-0.9.1, I get this list of problems:

Replacements of *printf, because of
  checking whether printf supports infinite 'long double' arguments... no
  checking whether printf supports the 'ls' directive... no
  checking whether printf survives out-of-memory conditions... no

Replacement of duplocale, because of
  checking whether duplocale(LC_GLOBAL_LOCALE) works... no

Replacement of fdopen, because of
  checking whether fdopen sets errno... no

Replacement of futimens, because of
  checking whether futimens works... no

Replacement of getcwd, because of
  checking whether getcwd handles long file names properly... no, but it is partly working
  checking whether getcwd aborts when 4k < cwd_length < 16k... no

Replacement of getopt, because of
  checking whether getopt is POSIX compatible... no

Replacement of glob, because of
  checking for GNU glob interface version 1... no
(not sure this is a bug or just an incompatibility compared to glibc)

Replacement of iconv and iconv_open, because of
  checking whether iconv supports conversion between UTF-8 and UTF-{16,32}{BE,LE}... no

Replacement of mktime, because of
  checking for working mktime... no

Replacement of perror, because of
  checking whether perror matches strerror... no

Replacement of popen, because of
  checking whether popen works with closed stdin... no

Replacement of regex, because of
  checking for working re_compile_pattern... no

Replacement of strtod, because of
  checking whether strtod obeys C99... no

For each of the replacements, first look at the test program's results
(in config.log), then look at the test program's source code (in m4/*.m4).

Furthermore we have test failures:

test-duplocale.c:70: assertion failed
FAIL: test-duplocale

test-fcntl.c:382: assertion failed
FAIL: test-fcntl

test-fdatasync.c:50: assertion failed
FAIL: test-fdatasync

test-fma2.h:116: assertion failed
FAIL: test-fma2

test-fsync.c:50: assertion failed
FAIL: test-fsync

test-fwrite.c:53: assertion failed
FAIL: test-fwrite

test-getlogin_r.c:88: assertion failed
FAIL: test-getlogin_r

test-grantpt.c:34: assertion failed
FAIL: test-grantpt

test-localeconv.c:41: assertion failed
FAIL: test-localeconv

Segmentation fault
FAIL: test-localename

test-ptsname_r.c:118: assertion failed
FAIL: test-ptsname_r

test-strerror_r.c:118: assertion failed
FAIL: test-strerror_r

test-wcwidth.c:71: assertion failed
FAIL: test-wcwidth

When I compile all of gnulib, I also get a compilation error
(may be a musl or a gnulib problem, haven't investigated):
fsusage.c: In function 'get_fs_usage':
fsusage.c:222:17: error: storage size of 'fsd' isn't known
fsusage.c:224:3: warning: implicit declaration of function 'statfs' [-Wimplicit-function-declaration]
fsusage.c:222:17: warning: unused variable 'fsd' [-Wunused-variable]
make[4]: *** [fsusage.o] Error 1


Powered by blists - more mailing lists

Confused about mailing lists and their use? Read about mailing lists on Wikipedia and check out these guidelines on proper formatting of your messages.