NilsIrl / dockerc

container image to single executable compiler
GNU General Public License v3.0
1.61k stars 30 forks source link

Got error when building image to exec file #20

Open ilu123 opened 1 month ago

ilu123 commented 1 month ago

I tried to use it to build gitlab docker image into a executable file:

./dockerc --image docker-daemon:gitlab/gitlab-ce:13.8.8-ce.0 --output gitlab

and got error message like this:

mksquashfs: dl-call-libc-early-init.c:37: _dl_call_libc_early_init: Assertion `sym != NULL' failed.

image

NilsIrl commented 1 month ago

How did you build the gitlab image? Is there a different image that you have succeeded in building (so the bug is gitlab specific)?

MathieuB1 commented 3 weeks ago

Hi everyone,

Regarding this issue it happens on a Ubuntu 20 machine:

lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 20.04.3 LTS
Release:        20.04
Codename:       focal
mbarbot@machine1:~/$ dpkg -s libc6-dev
Package: libc6-dev
Status: install ok installed
Priority: optional
Section: libdevel
Installed-Size: 19081
Maintainer: Ubuntu Developers [ubuntu-devel-discuss@lists.ubuntu.com](mailto:ubuntu-devel-discuss@lists.ubuntu.com)
Architecture: amd64
Multi-Arch: same
Source: glibc
Version: 2.31-0ubuntu9.16
Provides: libc-dev
Depends: libc6 (= 2.31-0ubuntu9.16), libc-dev-bin (= 2.31-0ubuntu9.16), linux-libc-dev, libcrypt-dev
Suggests: glibc-doc, manpages-dev
Breaks: binutils (<< 2.26), binutils-gold (<< 2.20.1-11), cmake (<< 2.8.4+dfsg.1-5), gcc-4.4 (<< 4.4.6-4), gcc-4.5 (<< 4.5.3-2), gcc-4.6 (<< 4.6.0-12), libhwloc-dev (<< 1.2-3), libjna-java (<< 3.2.7-4), liblouis-dev (<< 2.3.0-2), liblouisxml-dev (<< 2.4.0-2), libperl5.26 (<< 5.26.1-3), make (<< 3.81-8.1), pkg-config (<< 0.26-1)
Conflicts: libc0.1-dev, libc0.3-dev, libc6.1-dev
Description: GNU C Library: Development Libraries and Header Files
Contains the symlinks, headers, and object files needed to compile
and link programs which use the standard C library.
Homepage: https://www.gnu.org/software/libc/libc.html
Original-Maintainer: GNU Libc Maintainers debian-glibc@lists.debian.org
Original-Vcs-Browser: https://salsa.debian.org/glibc-team/glibc
Original-Vcs-Git: https://salsa.debian.org/glibc-team/glibc.git

ldd --version ldd (Ubuntu GLIBC 2.31-0ubuntu9.16) 2.31

osboxes@osboxes:~/$ dpkg -s libc6-dev
Package: libc6-dev
Status: install ok installed
Priority: optional
Section: libdevel
Installed-Size: 19081
Maintainer: Ubuntu Developers [ubuntu-devel-discuss@lists.ubuntu.com](mailto:ubuntu-devel-discuss@lists.ubuntu.com)
Architecture: amd64
Multi-Arch: same
Source: glibc
Version: 2.31-0ubuntu9.16
Provides: libc-dev
Depends: libc6 (= 2.31-0ubuntu9.16), libc-dev-bin (= 2.31-0ubuntu9.16), linux-libc-dev, libcrypt-dev
Suggests: glibc-doc, manpages-dev
Breaks: binutils (<< 2.26), binutils-gold (<< 2.20.1-11), cmake (<< 2.8.4+dfsg.1-5), gcc-4.4 (<< 4.4.6-4), gcc-4.5 (<< 4.5.3-2), gcc-4.6 (<< 4.6.0-12), libhwloc-dev (<< 1.2-3), libjna-java (<< 3.2.7-4), liblouis-dev (<< 2.3.0-2), liblouisxml-dev (<< 2.4.0-2), libperl5.26 (<< 5.26.1-3), make (<< 3.81-8.1), pkg-config (<< 0.26-1)
Conflicts: libc0.1-dev, libc0.3-dev, libc6.1-dev
Description: GNU C Library: Development Libraries and Header Files
Contains the symlinks, headers, and object files needed to compile
and link programs which use the standard C library.
Homepage: https://www.gnu.org/software/libc/libc.html
Original-Maintainer: GNU Libc Maintainers debian-glibc@lists.debian.org
Original-Vcs-Browser: https://salsa.debian.org/glibc-team/glibc
Original-Vcs-Git: https://salsa.debian.org/glibc-team/glibc.git

ldd --version ldd (Ubuntu GLIBC 2.31-0ubuntu9.15) 2.31

I see that glibc versions are not the same. It could be related.

My execution trace:


./dockerc --image docker-daemon:$APP_NAME:$APP_VERSION --output bin/xxx

Creating 4.0 filesystem on bin/xxx, block size 131072.
[=========================================================================================================================================================================================|] 19955/19955 100%

Exportable Squashfs 4.0 filesystem, zstd compressed, data block size 131072
        compressed data, compressed metadata, compressed fragments,
        compressed xattrs, compressed ids
        duplicates are removed
Filesystem size 244331.49 Kbytes (238.60 Mbytes)
        32.23% of uncompressed filesystem size (758073.61 Kbytes)
Inode table size 200532 bytes (195.83 Kbytes)
        22.76% of uncompressed inode table size (880998 bytes)
Directory table size 225763 bytes (220.47 Kbytes)
        35.24% of uncompressed directory table size (640654 bytes)
Xattr table size 84 bytes (0.08 Kbytes)
        29.58% of uncompressed xattr table size (284 bytes)
Number of duplicate files found 1681
Number of inodes 23757
Number of files 14861
Number of fragments 771
Number of symbolic links 7389
Number of device nodes 0
Number of fifo nodes 0
Number of socket nodes 0
Number of directories 1507https://github.com/plougher/squashfs-tools/issues/250
Number of hard-links 19
Number of ids (unique uids + gids) 2
Number of uids 1
mksquashfs: dl-call-libc-early-init.c:37: _dl_call_libc_early_init: Assertion `sym != NULL' failed.
NilsIrl commented 3 weeks ago

Regarding this issue it happens on a Ubuntu 20 machine:

@MathieuB1 what arguments did you specify to dockerc?

MathieuB1 commented 3 weeks ago

./dockerc --image docker-daemon:$APP_NAME:$APP_VERSION --output bin/xxx

But the same command works in my local desktop Ubuntu 20

MathieuB1 commented 3 weeks ago

Finally I fixed it by upgrading my ubuntu20 on the server. There was outdated packages.