Ubuntu

[Regression] error when trying to compile a program which uses alsa/asoundlib.h with EGLIBC 2.17

Reported by Matthieu Baerts on 2013-01-29
10
This bug affects 2 people
Affects Status Importance Assigned to Milestone
alsa-lib (Fedora)
Unknown
Unknown
alsa-lib (Ubuntu)
Undecided
Unassigned

Bug Description

Hello,

Firstly, thank you for maintaining and packaging this complex project!

I'm not sure that this bug is due to libc6 but with the latest version (and not with the previous one: I just downgraded to the previous version and I don't have this problem with it) I'm no longer able to compile a Cairo-Dock's plugin which includes <alsa/asoundlib.h>.

Here is the error:

=================

  $ env LANG=C make VERBOSE=1
/usr/bin/cc -DCAIRO_DOCK_FORCE_ICON_IN_MENUS=1 -DDBUSMENU_GTK3_NEW=1 -DGL_GLEXT_PROTOTYPES=\"1\" -DGTK_DISABLE_DEPRECATED=\"1\" -DMY_APPLET_CONF_FILE=\"AlsaMixer.conf\" -DMY_APPLET_DOCK_VERSION=\"3.1.99.beta0\" -DMY_APPLET_GETTEXT_DOMAIN=\"cairo-dock-plugins\" -DMY_APPLET_ICON_FILE=\"icon.png\" -DMY_APPLET_PREVIEW_FILE=\"preview.jpg\" -DMY_APPLET_SHARE_DATA_DIR=\"/usr/share/cairo-dock/plug-ins/AlsaMixer\" -DMY_APPLET_USER_DATA_DIR=\"AlsaMixer\" -DMY_APPLET_VERSION=\"2.1.3\" -DSOUND_SERVICE_SUPPORT=\"1\" -DSOUND_SERVICE_VERSION=1 -Dcd_AlsaMixer_EXPORTS -fPIC -I/usr/include/gtk-3.0 -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include -I/usr/include/cairo -I/usr/include/librsvg-2.0 -I/usr/include/dbus-1.0 -I/usr/lib/x86_64-linux-gnu/dbus-1.0/include -I/usr/include/libxml2 -I/usr/include/pango-1.0 -I/usr/include/atk-1.0 -I/usr/include/at-spi2-atk/2.0 -I/usr/include/gio-unix-2.0 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/freetype2 -I/usr/include/pixman-1 -I/usr/include/libpng12 -I/usr/include/libdrm -I/usr/include/cairo-dock -I/usr/include/cairo-dock/gldit -I/usr/include/cairo-dock/icon-factory -I/usr/include/cairo-dock/implementations -I/usr/include/alsa -I/usr/include/libdbusmenu-glib-0.4 -I/usr/include/libdbusmenu-gtk3-0.4 -I/usr/include/libindicator3-0.4 -I/usr/include/libido3-0.1 -I/opt/cairo-dock_bzr/cairo-dock-plug-ins/Indicator-applet -std=c99 -Wall -o CMakeFiles/cd-AlsaMixer.dir/applet-init.c.o -c /opt/cairo-dock_bzr/cairo-dock-plug-ins/alsaMixer/src/applet-init.c
In file included from /usr/include/alsa/asoundlib.h:49:0,
                 from /opt/cairo-dock_bzr/cairo-dock-plug-ins/alsaMixer/src/applet-struct.h:23,
                 from /opt/cairo-dock_bzr/cairo-dock-plug-ins/alsaMixer/src/applet-init.c:20:
/usr/include/alsa/pcm.h:944:1: error: unknown type name 'u_int8_t'
/usr/include/alsa/pcm.h:945:1: error: unknown type name 'u_int16_t'
/usr/include/alsa/pcm.h:946:1: error: unknown type name 'u_int32_t'
/usr/include/alsa/pcm.h:947:1: error: unknown type name 'u_int64_t'
/usr/include/alsa/pcm.h:1052:1: error: unknown type name 'int16_t'
make[2]: *** [alsaMixer/src/CMakeFiles/cd-AlsaMixer.dir/applet-init.c.o] Error 1
make[2]: Leaving directory `/opt/cairo-dock_bzr/cairo-dock-plug-ins/build'
make[1]: *** [alsaMixer/src/CMakeFiles/cd-AlsaMixer.dir/all] Error 2
make[1]: Leaving directory `/opt/cairo-dock_bzr/cairo-dock-plug-ins/build'
make: *** [all] Error 2

=================

It seems that 'u_intX_t' ('u_int8_t', etc.) are defined in <sys/types.h>.
Should I have to report this bug to alsa devs or now should I have to include <sys/types.h> before including <alsa/asoundlib.h>?

Regards,

Matt

ProblemType: Bug
DistroRelease: Ubuntu 13.04
Package: libc6 2.17-0ubuntu1
ProcVersionSignature: Ubuntu 3.8.0-2.6-generic 3.8.0-rc4
Uname: Linux 3.8.0-2-generic x86_64
ApportVersion: 2.8-0ubuntu2
Architecture: amd64
Date: Tue Jan 29 21:30:07 2013
InstallationDate: Installed on 2011-08-10 (538 days ago)
InstallationMedia: Ubuntu 11.10 "Oneiric Ocelot" - Alpha amd64 (20110803.1)
MarkForUpload: True
SourcePackage: eglibc
UpgradeStatus: No upgrade log present (probably fresh install)

Related branches

Matthieu Baerts (matttbe) wrote :
summary: - [Regression] error when trying to compile a module which use
+ [Regression] error when trying to compile a program which uses
alsa/asoundlib.h with EGLIBC 2.17
description: updated
Adam Conrad (adconrad) wrote :

It could be a bit more interesting than just "include some more headers" for the proper upstream fix:

#if defined __USE_SVID || defined __USE_XOPEN_EXTENDED || defined __USE_BSD
# include <sys/types.h> /* we need int32_t... */

stdlib.h *does* include sys/types.h, but only under certain conditions. It's entirely plausible that those conditions aren't being met by alsa which, previously, may have been mistakenly making use of sysv/xopen extensions without declaring so, but some other part of the toolchain picked up the slack and papered over it.

affects: eglibc (Ubuntu) → alsa-lib (Ubuntu)
no longer affects: eglibc (Fedora)
Launchpad Janitor (janitor) wrote :

This bug was fixed in the package alsa-lib - 1.0.25-4ubuntu3

---------------
alsa-lib (1.0.25-4ubuntu3) raring; urgency=low

  * sys_types_include.patch: Explicitly include <sys/types.h> (LP: #1109298)
 -- Adam Conrad <email address hidden> Sat, 09 Feb 2013 20:07:54 -0700

Changed in alsa-lib (Ubuntu):
status: New → Fix Released
Matthieu Baerts (matttbe) wrote :

Thank you for all these details and this patch! :)

This is needed by snd_pcm_format_silence* functions which
return u_int*_t. It was discovered while trying to compile ALSA
programs with eglibc 2.17.

Credits to Richard Shaw, Gary Buhrmaster, Matthieu Baerts and
 Adam Conrad for this fix.

BugLink: https://bugs.launchpad.net/bugs/1109298
BugLink: https://bugzilla.redhat.com/show_bug.cgi?id=885306
Signed-off-by: David Henningsson <email address hidden>
---
 include/asoundlib-head.h | 1 +
 1 file changed, 1 insertion(+)

diff --git a/include/asoundlib-head.h b/include/asoundlib-head.h
index 20c8a68..6edbab0 100644
--- a/include/asoundlib-head.h
+++ b/include/asoundlib-head.h
@@ -31,6 +31,7 @@
 #include <unistd.h>
 #include <stdio.h>
 #include <stdlib.h>
+#include <sys/types.h>
 #include <string.h>
 #include <fcntl.h>
 #include <assert.h>
--
1.7.9.5

Takashi Iwai (tiwai) wrote :

At Tue, 12 Feb 2013 10:06:11 +0100,
David Henningsson wrote:
>
> This is needed by snd_pcm_format_silence* functions which
> return u_int*_t. It was discovered while trying to compile ALSA
> programs with eglibc 2.17.
>
> Credits to Richard Shaw, Gary Buhrmaster, Matthieu Baerts and
> Adam Conrad for this fix.
>
> BugLink: https://bugs.launchpad.net/bugs/1109298
> BugLink: https://bugzilla.redhat.com/show_bug.cgi?id=885306
> Signed-off-by: David Henningsson <email address hidden>

For u_int_* types, wouldn't it better to include stdint.h?

Takashi

> ---
> include/asoundlib-head.h | 1 +
> 1 file changed, 1 insertion(+)
>
> diff --git a/include/asoundlib-head.h b/include/asoundlib-head.h
> index 20c8a68..6edbab0 100644
> --- a/include/asoundlib-head.h
> +++ b/include/asoundlib-head.h
> @@ -31,6 +31,7 @@
> #include <unistd.h>
> #include <stdio.h>
> #include <stdlib.h>
> +#include <sys/types.h>
> #include <string.h>
> #include <fcntl.h>
> #include <assert.h>
> --
> 1.7.9.5
>

David Henningsson (diwic) wrote :

On 02/12/2013 10:10 AM, Takashi Iwai wrote:
> At Tue, 12 Feb 2013 10:06:11 +0100,
> David Henningsson wrote:
>>
>> This is needed by snd_pcm_format_silence* functions which
>> return u_int*_t. It was discovered while trying to compile ALSA
>> programs with eglibc 2.17.
>>
>> Credits to Richard Shaw, Gary Buhrmaster, Matthieu Baerts and
>> Adam Conrad for this fix.
>>
>> BugLink: https://bugs.launchpad.net/bugs/1109298
>> BugLink: https://bugzilla.redhat.com/show_bug.cgi?id=885306
>> Signed-off-by: David Henningsson <email address hidden>
>
> For u_int_* types, wouldn't it better to include stdint.h?

Hmm, it looks like stdint.h declares uint_* whereas sys/types.h declares
u_int_* (notice the _ between "u" and "int"). Do you think we should
change snd_pcm_format_silence* from u_int to uint?

>
>
> Takashi
>
>> ---
>> include/asoundlib-head.h | 1 +
>> 1 file changed, 1 insertion(+)
>>
>> diff --git a/include/asoundlib-head.h b/include/asoundlib-head.h
>> index 20c8a68..6edbab0 100644
>> --- a/include/asoundlib-head.h
>> +++ b/include/asoundlib-head.h
>> @@ -31,6 +31,7 @@
>> #include <unistd.h>
>> #include <stdio.h>
>> #include <stdlib.h>
>> +#include <sys/types.h>
>> #include <string.h>
>> #include <fcntl.h>
>> #include <assert.h>
>> --
>> 1.7.9.5
>>
>

--
David Henningsson, Canonical Ltd.
https://launchpad.net/~diwic

On Tue, 2013-02-12 at 10:06 +0100, David Henningsson wrote:
> This is needed by snd_pcm_format_silence* functions which
> return u_int*_t. It was discovered while trying to compile ALSA
> programs with eglibc 2.17.
>
> Credits to Richard Shaw, Gary Buhrmaster, Matthieu Baerts and
> Adam Conrad for this fix.
>
> BugLink: https://bugs.launchpad.net/bugs/1109298
> BugLink: https://bugzilla.redhat.com/show_bug.cgi?id=885306
> Signed-off-by: David Henningsson <email address hidden>
> ---
> include/asoundlib-head.h | 1 +
> 1 file changed, 1 insertion(+)
>
> diff --git a/include/asoundlib-head.h b/include/asoundlib-head.h
> index 20c8a68..6edbab0 100644
> --- a/include/asoundlib-head.h
> +++ b/include/asoundlib-head.h
> @@ -31,6 +31,7 @@
> #include <unistd.h>
> #include <stdio.h>
> #include <stdlib.h>
> +#include <sys/types.h>

int*_t and uint*_t (not u_int*_t) are standard in C99, and they are
available in stdint.h or inttypes.h (both work, inttypes.h contains also
the PRI* constants for the corresponding printf() format specifiers).
Perhaps it would be better to use one of those headers instead? That
would require converting u_int*_t usage to uint*_t, though, so it would
take some extra work...

--
Tanu

At Tue, 12 Feb 2013 10:16:13 +0100,
David Henningsson wrote:
>
> On 02/12/2013 10:10 AM, Takashi Iwai wrote:
> > At Tue, 12 Feb 2013 10:06:11 +0100,
> > David Henningsson wrote:
> >>
> >> This is needed by snd_pcm_format_silence* functions which
> >> return u_int*_t. It was discovered while trying to compile ALSA
> >> programs with eglibc 2.17.
> >>
> >> Credits to Richard Shaw, Gary Buhrmaster, Matthieu Baerts and
> >> Adam Conrad for this fix.
> >>
> >> BugLink: https://bugs.launchpad.net/bugs/1109298
> >> BugLink: https://bugzilla.redhat.com/show_bug.cgi?id=885306
> >> Signed-off-by: David Henningsson <email address hidden>
> >
> > For u_int_* types, wouldn't it better to include stdint.h?
>
> Hmm, it looks like stdint.h declares uint_* whereas sys/types.h declares
> u_int_* (notice the _ between "u" and "int"). Do you think we should
> change snd_pcm_format_silence* from u_int to uint?

Ah, OK, then sys/types.h is the right inclusion.

Maybe conversion to uint_*_t would be more universal, but I don't
think it's worth, as these types are used in many places in the public
API already.

I'll take your patch as is now.

thanks,

Takashi

Tomin (tomin) wrote :

How come I have a very similar problem when trying to compile Mythtv? I have the same error message although I use the latest packages on Ubuntu raring. libasound2-dev is version 1.0.25-4ubuntu3.

In file included from /usr/include/alsa/asoundlib.h:49:0,
                 from libavdevice/alsa-audio-common.c:31:
/usr/include/alsa/pcm.h:944:1: virhe: unknown type name ”u_int8_t”
/usr/include/alsa/pcm.h:945:1: virhe: unknown type name ”u_int16_t”
/usr/include/alsa/pcm.h:946:1: virhe: unknown type name ”u_int32_t”
/usr/include/alsa/pcm.h:947:1: virhe: unknown type name ”u_int64_t”
In file included from /usr/include/alsa/asoundlib.h:49:0,
                 from libavdevice/alsa-audio-common.c:31:
/usr/include/alsa/pcm.h:1052:1: virhe: unknown type name ”int16_t”
In file included from /usr/include/alsa/asoundlib.h:49:0,
                 from libavdevice/alsa-audio-enc.c:40:
/usr/include/alsa/pcm.h:944:1: virhe: unknown type name ”u_int8_t”
/usr/include/alsa/pcm.h:945:1: virhe: unknown type name ”u_int16_t”
/usr/include/alsa/pcm.h:946:1: virhe: unknown type name ”u_int32_t”
/usr/include/alsa/pcm.h:947:1: virhe: unknown type name ”u_int64_t”
In file included from /usr/include/alsa/asoundlib.h:49:0,
                 from libavdevice/alsa-audio-enc.c:40:
/usr/include/alsa/pcm.h:1052:1: virhe: unknown type name ”int16_t”

To post a comment you must log in.
This report contains Public information  Edit
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.