BusyBox Bug and Patch Tracking
BusyBox
  

Viewing Issue Simple Details Jump to Notes ] View Advanced ] Issue History ] Print ]
ID Category Severity Reproducibility Date Submitted Last Update
0005724 [buildroot] Shared Library Support crash always 10-24-08 21:51 11-04-08 17:58
Reporter robang74 View Status public  
Assigned To buildroot
Priority normal Resolution open  
Status assigned   Product Version 0.9.27
Summary 0005724: libglib2 compilation crash on /usr/bin/glib-genmarshal
Description make[3]: Leaving directory `/home/roberto/gles/buildroot/build_i586/libglib2-2.15.4/glib'
Making all in gobject
make[3]: Entering directory `/home/roberto/gles/buildroot/build_i586/libglib2-2.15.4/gobject'
/home/roberto/gles/buildroot/build_i586/staging_dir/usr/bin/i586-linux-uclibc-gcc -Os -I/home/roberto/gles/buildroot/build_i586/staging_dir/usr/include -I/home/roberto/gles/buildroot/build_i586/staging_dir/include --sysroot=/home/roberto/gles/buildroot/build_i586/staging_dir/ -isysroot /home/roberto/gles/buildroot/build_i586/staging_dir -mtune=i586 -march=i586 -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -DHAVE_CONFIG_H -I. -I.. -DG_LOG_DOMAIN=\"GLib-GObject\" -I.. -I../glib -I.. -DG_ENABLE_DEBUG -DG_DISABLE_DEPRECATED -DGOBJECT_COMPILATION -DG_DISABLE_CONST_RETURNS -pthread -g -O2 -Wall -MT glib-genmarshal.o -MD -MP -MF .deps/glib-genmarshal.Tpo -c -o glib-genmarshal.o glib-genmarshal.c
mv -f .deps/glib-genmarshal.Tpo .deps/glib-genmarshal.Po
/bin/bash ../libtool --tag=CC --mode=link /home/roberto/gles/buildroot/build_i586/staging_dir/usr/bin/i586-linux-uclibc-gcc -Os -I/home/roberto/gles/buildroot/build_i586/staging_dir/usr/include -I/home/roberto/gles/buildroot/build_i586/staging_dir/include --sysroot=/home/roberto/gles/buildroot/build_i586/staging_dir/ -isysroot /home/roberto/gles/buildroot/build_i586/staging_dir -mtune=i586 -march=i586 -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -g -O2 -Wall -o glib-genmarshal glib-genmarshal.o ../glib/libglib-2.0.la -lintl
mkdir .libs
/home/roberto/gles/buildroot/build_i586/staging_dir/usr/bin/i586-linux-uclibc-gcc -Os -I/home/roberto/gles/buildroot/build_i586/staging_dir/usr/include -I/home/roberto/gles/buildroot/build_i586/staging_dir/include --sysroot=/home/roberto/gles/buildroot/build_i586/staging_dir/ -isysroot /home/roberto/gles/buildroot/build_i586/staging_dir -mtune=i586 -march=i586 -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -g -O2 -Wall -o glib-genmarshal glib-genmarshal.o ../glib/.libs/libglib-2.0.so -lintl -Wl,--rpath -Wl,/home/roberto/gles/buildroot/build_i586/libglib2-2.15.4/glib/.libs
/usr/bin/make glib-genmarshal
make[4]: Entering directory `/home/roberto/gles/buildroot/build_i586/libglib2-2.15.4/gobject'
make[4]: `glib-genmarshal' is up to date.
make[4]: Leaving directory `/home/roberto/gles/buildroot/build_i586/libglib2-2.15.4/gobject'
echo "#ifndef __G_MARSHAL_H__" > xgen-gmh \
    && echo "#define __G_MARSHAL_H__" >> xgen-gmh \
    && /usr/bin/glib-genmarshal --nostdinc --prefix=g_cclosure_marshal ./gmarshal.list --header >> xgen-gmh \
    && echo "#endif /* __G_MARSHAL_H__ */" >> xgen-gmh \
    && (cmp -s xgen-gmh gmarshal.h 2>/dev/null || cp xgen-gmh gmarshal.h) \
    && rm -f xgen-gmh xgen-gmh~ \
    && echo timestamp > stamp-gmarshal.h
/bin/bash: line 2: /usr/bin/glib-genmarshal: No such file or directory
make[3]: *** [stamp-gmarshal.h] Error 127
make[3]: Leaving directory `/home/roberto/gles/buildroot/build_i586/libglib2-2.15.4/gobject'
make[2]: *** [all-recursive] Error 1
make[2]: Leaving directory `/home/roberto/gles/buildroot/build_i586/libglib2-2.15.4'
make[1]: *** [all] Error 2
make[1]: Leaving directory `/home/roberto/gles/buildroot/build_i586/libglib2-2.15.4'
make: *** [/home/roberto/gles/buildroot/build_i586/libglib2-2.15.4/.stamp_built] Error 2
Additional Information /usr/bin/glib-genmarshal in buildroot is

roberto@rafbook:~/gles/buildroot$ ls -al ./build_i586/libglib2-2.15.4/gobject/glib-genmarshal
-rwxr-xr-x 1 roberto roberto 36524 2008-10-25 06:38 ./build_i586/libglib2-2.15.4/gobject/glib-genmarshal

and it would be called in

buildroot/build_i586/libglib2-2.15.4/gobject/Makefile
Attached Files  5724.config [^] (27,980 bytes) 10-26-08 15:31
 .config [^] (28,037 bytes) 11-04-08 11:40

- Relationships

- Notes
(0014134)
robang74
10-24-08 22:10
edited on: 10-24-08 22:53

Proposed solution: glib-genmarshal should be compiled for $HOST not for $TARGET system. Probably tests should be avoided too.

roberto@rafbook:~/gles/buildroot$ svn info | grep Last
Last Changed Author: jacmet
Last Changed Rev: 23778
Last Changed Date: 2008-10-24 13:02:32 +0200 (Fri, 24 Oct 2008)

 
(0014424)
robang74
10-28-08 02:21

roberto@rafbook:~/gles/buildroot$ svn info | grep Last
Last Changed Author: jacmet
Last Changed Rev: 23821
Last Changed Date: 2008-10-27 16:15:52 +0100 (Mon, 27 Oct 2008)
 
(0014454)
tpetazzoni
10-28-08 02:43

glib2 is designed to use the glib-genmarshal binary available in the PATH in the case of cross-compilation. The ./configure script checks that a glib-genmarshal binary is available in the PATH in the cross-compile case, and fails if glib-genmarshal is not found:

if test $cross_compiling = yes; then
  AC_PATH_PROG(GLIB_GENMARSHAL, glib-genmarshal, no)
  if test x$GLIB_GENMARSHAL = xno; then
    AC_MSG_ERROR(Could not find a glib-genmarshal in your PATH)
  fi
fi

Do you have the output of the configure script ? And the config.log file ?

It should either :

 * Think that you are cross-compiling, testing in the configure script that you have glib-genmarshal in your PATH and fail if not. Which is not your case, it seems.

 * Think that you are *not* cross-compiling, and use the internally compiled glib-genmarshal. Which is not your case either.

So, I'm quite confused with what you're seeing.
 
(0015044)
jacmet
11-04-08 01:42

Do you have the glib development package installed on your system? (E.G. something like libglib2.0-dev)
 
(0015064)
robang74
11-04-08 08:46

To answer to tpetazzoni I need more time but I can answer to jacmet pretty immediately: no, I do not have any libglib*-dev installed. ASAP I will investigate the problem deeper. Thanks to both, for the answer.
 
(0015074)
intravenoes
11-04-08 11:06

One thing to keep in mind here is that the options for glib-genmarshal or rather glib-mkenums change a bit for newer versions of glib (2.18+).
glib-mkenum adds ENUMPREFIX. Newer versions of libgtk (2.14+) use this, e.g. in gdk/gdkenumtypes.h.template.
So if the host system version of glib is below 2.18 but you try to cross compile here and use the host system libs it will fail since this feature is not supported. I know that these versions are not in buildroot right now, just wanted to make you aware of this issue since I just ran into it.
 
(0015084)
robang74
11-04-08 11:39

checking for EILSEQ... yes
+ test yes = yes
+ CROSS_COMPILING_TRUE=
+ CROSS_COMPILING_FALSE='#'
+ test yes = yes
+ set dummy glib-genmarshal
+ ac_word=glib-genmarshal
+ echo 'configure:44515: checking for glib-genmarshal'
+ echo -n 'checking for glib-genmarshal... '
checking for glib-genmarshal... + test set = set
+ echo -n '(cached) '
(cached) + GLIB_GENMARSHAL=/usr/bin/glib-genmarshal
+ test -n /usr/bin/glib-genmarshal
+ echo 'configure:44546: result: /usr/bin/glib-genmarshal'
+ echo /usr/bin/glib-genmarshal
/usr/bin/glib-genmarshal
+ test x/usr/bin/glib-genmarshal = xno
+ set +x
checking whether to build gtk-doc documentation... no

I think configure uses some kind of cached value which obviously is not right at all because my host is a 586 and my target is a 586. Anyway these are the "bad" lines:

config.status:1080:s,@GLIB_GENMARSHAL@,|#_!!_#|/usr/bin/glib-genmarshal,g

configure:44517:if test "${ac_cv_path_GLIB_GENMARSHAL+set}" = set; then

Makefile:163:GLIB_GENMARSHAL = /usr/bin/glib-genmarshal

I have tried with this work around in order to bypass the problem:

for i in $(grep -rn " = /usr/bin/glib-genmarshal" * | cut -d: -f1); do sed -e "s,GLIB_GENMARSHAL = /usr/bin/glib-genmarshal,GLIB_GENMARSHAL = /home/roberto/gles/buildroot/build_i586/libglib2-2.15.4/gobject/glib-genmarshal,g" $i > $i.1; mv -f $i.1 $i; done

but the real problem is that the glib-genmarshal is compiled for the $TARGET instead for the $HOST as I stated at the beginning:

Making all in gobject
make[3]: Entering directory `/home/roberto/gles/buildroot/build_i586/libglib2-2.15.4/gobject'
/usr/bin/make glib-genmarshal
make[4]: Entering directory `/home/roberto/gles/buildroot/build_i586/libglib2-2.15.4/gobject'
make[4]: `glib-genmarshal' is up to date.
make[4]: Leaving directory `/home/roberto/gles/buildroot/build_i586/libglib2-2.15.4/gobject'
echo "#ifndef __G_MARSHAL_H__" > xgen-gmh \
    && echo "#define __G_MARSHAL_H__" >> xgen-gmh \
    && /home/roberto/gles/buildroot/build_i586/libglib2-2.15.4/gobject/glib-genmarshal --nostdinc --prefix=g_cclosure_marshal ./gmarshal.list --header >> xgen-gmh \
    && echo "#endif /* __G_MARSHAL_H__ */" >> xgen-gmh \
    && (cmp -s xgen-gmh gmarshal.h 2>/dev/null || cp xgen-gmh gmarshal.h) \
    && rm -f xgen-gmh xgen-gmh~ \
    && echo timestamp > stamp-gmarshal.h
/bin/bash: line 2: /home/roberto/gles/buildroot/build_i586/libglib2-2.15.4/gobject/glib-genmarshal: No such file or directory
make[3]: *** [stamp-gmarshal.h] Error 127
make[3]: Leaving directory `/home/roberto/gles/buildroot/build_i586/libglib2-2.15.4/gobject'
make[2]: *** [all-recursive] Error 1
make[2]: Leaving directory `/home/roberto/gles/buildroot/build_i586/libglib2-2.15.4'
make[1]: *** [all] Error 2
make[1]: Leaving directory `/home/roberto/gles/buildroot/build_i586/libglib2-2.15.4'
make: *** [/home/roberto/gles/buildroot/build_i586/libglib2-2.15.4/.stamp_built] Error 2

roberto@rafbook:~/gles/buildroot$ ls -al /home/roberto/gles/buildroot/build_i586/libglib2-2.15.4/gobject/glib-genmarshal
-rwxr-xr-x 1 roberto roberto 36532 2008-11-04 20:14 /home/roberto/gles/buildroot/build_i586/libglib2-2.15.4/gobject/glib-genmarshal

roberto@rafbook:~/gles/buildroot$ file /home/roberto/gles/buildroot/build_i586/libglib2-2.15.4/gobject/glib-genmarshal
/home/roberto/gles/buildroot/build_i586/libglib2-2.15.4/gobject/glib-genmarshal: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), not stripped

roberto@rafbook:~/gles/buildroot$ ldd /home/roberto/gles/buildroot/build_i586/libglib2-2.15.4/gobject/glib-genmarshal
/usr/bin/ldd: line 117: /home/roberto/gles/buildroot/build_i586/libglib2-2.15.4/gobject/glib-genmarshal: No such file or directory

roberto@rafbook:~/gles/buildroot$ /home/roberto/gles/buildroot/build_i586/staging_dir/usr/bin/i586-linux-uclibc-ldd /home/roberto/gles/buildroot/build_i586/libglib2-2.15.4/gobject/glib-genmarshal
checking sub-depends for '/home/roberto/gles/buildroot/build_i586/libglib2-2.15.4/glib/.libs/libglib-2.0.so.0'
checking sub-depends for 'not found'
checking sub-depends for 'not found'
    libglib-2.0.so.0 => /home/roberto/gles/buildroot/build_i586/libglib2-2.15.4/glib/.libs/libglib-2.0.so.0 (0x00000000)
    libintl.so.8 => not found (0x00000000)
    libc.so.0 => not found (0x00000000)
    not a dynamic executable
 
(0015144)
robang74
11-04-08 17:58

I mean, in this file:

package/libglib2/libglib2.mk

 something like that:

TOPDIR=$(pwd)
tar xvjf dl/glib-2.15.4.tar.bz2 -C toolchain_build_i586/
mkdir toolchain_build_$(ARCH)/glib-2.15.4-host
pushd toolchain_build_$(ARCH)/glib-2.15.4-host
$(pwd)/../glib-2.15.4/configure
make && make DESTDIR=$(pwd)/../glib install
HOST_GLIB=toolchain_build_$(ARCH)/glib/usr
popd

mkdir build_$(ARCH)/glib-2.15.4
pushd build_$(ARCH)/glib-2.15.4
$(TARGET_CONFIG_ENV) $(TOPDIR)/toolchain_build_$(ARCH)/glib-2.15.4/configure
make $(TARGET_MAKE_ENV)
make $(TARGET_MAKE_ENV) DESTDIR=$(STAGE_DIR) install
popd
 

- Issue History
Date Modified Username Field Change
10-24-08 21:51 robang74 New Issue
10-24-08 21:51 robang74 Status new => assigned
10-24-08 21:51 robang74 Assigned To  => buildroot
10-24-08 22:09 robang74 Issue Monitored: robang74
10-24-08 22:10 robang74 Note Added: 0014134
10-24-08 22:30 robang74 Note Edited: 0014134
10-24-08 22:53 robang74 Note Edited: 0014134
10-26-08 15:31 robang74 File Added: 5724.config
10-28-08 02:21 robang74 Note Added: 0014424
10-28-08 02:43 tpetazzoni Note Added: 0014454
11-04-08 01:42 jacmet Note Added: 0015044
11-04-08 08:46 robang74 Note Added: 0015064
11-04-08 11:06 intravenoes Note Added: 0015074
11-04-08 11:39 robang74 Note Added: 0015084
11-04-08 11:40 robang74 File Added: .config
11-04-08 17:58 robang74 Note Added: 0015144


Copyright © 2000 - 2006 Mantis Group
Powered by Mantis Bugtracker