Can you run EFL32 applications on CentOS 9?

I have a 32 bit application built in Debian based OS that will crash on startup on CentOS 9 but runs on other distros. Someone said CentOS9 can’t run 32bit applications. Although the needed 32bit libraries are installed. It seems to be something in glibc

    Program received signal SIGSEGV, Segmentation fault.
    0xf7fcea09 in check_match (undef_name=undef_name@entry=0xf7acc0b6 "__udivdi3", ref=ref@entry=0xf7a968e8, version=version@entry=0xf71a8b70, flags=9, type_class=1, 
        sym=0x56556c74, symidx=418, strtab=0x56556cc4 "", map=0xf7ffdb70, versioned_sym=0xffffccac, num_versions=0xffffcca8) at dl-lookup.c:122
    122			  && map->l_versions[ndx].name[0] == '\0'
    
    ******************************************
    ******************************************
    (gdb) bt
    #0  0xf7fcea09 in check_match (undef_name=undef_name@entry=0xf7acc0b6 "__udivdi3", ref=ref@entry=0xf7a968e8, version=version@entry=0xf71a8b70, flags=9, type_class=1, 
        sym=0x56556c74, symidx=418, strtab=0x56556cc4 "", map=0xf7ffdb70, versioned_sym=0xffffccac, num_versions=0xffffcca8) at dl-lookup.c:122
    #1  0xf7fcedc6 in do_lookup_x (undef_name=undef_name@entry=0xf7acc0b6 "__udivdi3", new_hash=new_hash@entry=4161312091, old_hash=old_hash@entry=0xffffcd3c, ref=0xf7a968e8, 
        result=0xffffcd44, scope=0xf7ffdcd0, i=<optimized out>, version=0xf71a8b70, flags=9, skip=0x0, type_class=1, undef_map=0xf7d6d5a0) at dl-lookup.c:457
    #2  0xf7fcf634 in _dl_lookup_symbol_x (undef_name=0xf7acc0b6 "__udivdi3", undef_map=0xf7d6d5a0, ref=0xffffce0c, symbol_scope=<optimized out>, version=0xf71a8b70, type_class=1, 
        flags=9, skip_map=0x0) at dl-lookup.c:882
    #3  0xf7fd4653 in elf_machine_rel (skip_ifunc=0, reloc_addr_arg=0xf7cb84b8, version=0xf71a8b70, sym=0xf7a968e8, reloc=0xf7b044fc, scope=<optimized out>, map=0xf7d6d5a0)
        at ../sysdeps/i386/dl-machine.h:303
    #4  elf_dynamic_do_Rel (skip_ifunc=<optimized out>, lazy=<optimized out>, nrelative=<optimized out>, relsize=<optimized out>, reladdr=<optimized out>, scope=<optimized out>, 
        map=0xf7d6d5a0) at /usr/src/debug/glibc-2.34-221.el9.i386/elf/do-rel.h:142
    #5  _dl_relocate_object_no_relro (l=<optimized out>, scope=<optimized out>, reloc_mode=<optimized out>, consider_profiling=<optimized out>) at dl-reloc.c:283
    #6  0xf7fd6269 in _dl_relocate_object (l=0xf7d6d5a0, scope=0xf7d6d768, reloc_mode=1, consider_profiling=0) at dl-reloc.c:333
    #7  0xf7fe6245 in dl_main (phdr=<optimized out>, phnum=<optimized out>, user_entry=<optimized out>, auxv=<optimized out>) at rtld.c:2499
    #8  0xf7fe1b9f in _dl_sysdep_start (start_argptr=0xffffd210, dl_main=0xf7fe3af0 <dl_main>) at ../sysdeps/unix/sysv/linux/dl-sysdep.c:140
    #9  0xf7fe359d in _dl_start_final (arg=0xffffd210) at rtld.c:503
    #10 _dl_start (arg=<optimized out>) at rtld.c:588
    #11 0xf7fe26fb in _start () from /lib/ld-linux.so.2
    
    ******************************************
    ******************************************
    (gdb) where
    #0  0xf7fcea09 in check_match (undef_name=undef_name@entry=0xf7acc0b6 "__udivdi3", ref=ref@entry=0xf7a968e8, version=version@entry=0xf71a8b70, flags=9, type_class=1, 
        sym=0x56556c74, symidx=418, strtab=0x56556cc4 "", map=0xf7ffdb70, versioned_sym=0xffffccac, num_versions=0xffffcca8) at dl-lookup.c:122
    #1  0xf7fcedc6 in do_lookup_x (undef_name=undef_name@entry=0xf7acc0b6 "__udivdi3", new_hash=new_hash@entry=4161312091, old_hash=old_hash@entry=0xffffcd3c, ref=0xf7a968e8, 
        result=0xffffcd44, scope=0xf7ffdcd0, i=<optimized out>, version=0xf71a8b70, flags=9, skip=0x0, type_class=1, undef_map=0xf7d6d5a0) at dl-lookup.c:457
    #2  0xf7fcf634 in _dl_lookup_symbol_x (undef_name=0xf7acc0b6 "__udivdi3", undef_map=0xf7d6d5a0, ref=0xffffce0c, symbol_scope=<optimized out>, version=0xf71a8b70, type_class=1, 
        flags=9, skip_map=0x0) at dl-lookup.c:882
    #3  0xf7fd4653 in elf_machine_rel (skip_ifunc=0, reloc_addr_arg=0xf7cb84b8, version=0xf71a8b70, sym=0xf7a968e8, reloc=0xf7b044fc, scope=<optimized out>, map=0xf7d6d5a0)
        at ../sysdeps/i386/dl-machine.h:303
    #4  elf_dynamic_do_Rel (skip_ifunc=<optimized out>, lazy=<optimized out>, nrelative=<optimized out>, relsize=<optimized out>, reladdr=<optimized out>, scope=<optimized out>, 
        map=0xf7d6d5a0) at /usr/src/debug/glibc-2.34-221.el9.i386/elf/do-rel.h:142
    #5  _dl_relocate_object_no_relro (l=<optimized out>, scope=<optimized out>, reloc_mode=<optimized out>, consider_profiling=<optimized out>) at dl-reloc.c:283
    #6  0xf7fd6269 in _dl_relocate_object (l=0xf7d6d5a0, scope=0xf7d6d768, reloc_mode=1, consider_profiling=0) at dl-reloc.c:333
    #7  0xf7fe6245 in dl_main (phdr=<optimized out>, phnum=<optimized out>, user_entry=<optimized out>, auxv=<optimized out>) at rtld.c:2499
    #8  0xf7fe1b9f in _dl_sysdep_start (start_argptr=0xffffd210, dl_main=0xf7fe3af0 <dl_main>) at ../sysdeps/unix/sysv/linux/dl-sysdep.c:140
    #9  0xf7fe359d in _dl_start_final (arg=0xffffd210) at rtld.c:503
    #10 _dl_start (arg=<optimized out>) at rtld.c:588
    #11 0xf7fe26fb in _start () from /lib/ld-linux.so.2
    (gdb)

Here’s the ldd for CentOS 9:

	linux-gate.so.1 (0xf7f22000)
	libXcursor.so.1 => /lib/libXcursor.so.1 (0xf7c17000)
	libXfixes.so.3 => /lib/libXfixes.so.3 (0xf7c0f000)
	libXext.so.6 => /lib/libXext.so.6 (0xf7bf8000)
	libXft.so.2 => /lib/libXft.so.2 (0xf7bdd000)
	libfontconfig.so.1 => /lib/libfontconfig.so.1 (0xf7b8a000)
	libXinerama.so.1 => /lib/libXinerama.so.1 (0xf7b85000)
	libpthread.so.0 => /lib/libpthread.so.0 (0xf7b80000)
	libdl.so.2 => /lib/libdl.so.2 (0xf7b7b000)
	libX11.so.6 => /lib/libX11.so.6 (0xf7a21000)
	libpng16.so.16 => /lib/libpng16.so.16 (0xf79e4000)
	librt.so.1 => /lib/librt.so.1 (0xf79dd000)
	libzstd.so.1 => /lib/libzstd.so.1 (0xf7931000)
	libstdc++.so.6 => /lib/libstdc++.so.6 (0xf7702000)
	libm.so.6 => /lib/libm.so.6 (0xf7637000)
	libgcc_s.so.1 => /lib/libgcc_s.so.1 (0xf7619000)
	libc.so.6 => /lib/libc.so.6 (0xf7421000)
	libXrender.so.1 => /lib/libXrender.so.1 (0xf7413000)
	libfreetype.so.6 => /lib/libfreetype.so.6 (0xf734e000)
	libxml2.so.2 => /lib/libxml2.so.2 (0xf71af000)
	libxcb.so.1 => /lib/libxcb.so.1 (0xf7181000)
	libz.so.1 => /lib/libz.so.1 (0xf7167000)
	/lib/ld-linux.so.2 (0xf7f24000)
	libbz2.so.1 => /lib/libbz2.so.1 (0xf7153000)
	libharfbuzz.so.0 => /lib/libharfbuzz.so.0 (0xf7077000)
	libbrotlidec.so.1 => /lib/libbrotlidec.so.1 (0xf7069000)
	liblzma.so.5 => /lib/liblzma.so.5 (0xf703a000)
	libXau.so.6 => /lib/libXau.so.6 (0xf7034000)
	libglib-2.0.so.0 => /lib/libglib-2.0.so.0 (0xf6ede000)
	libgraphite2.so.3 => /lib/libgraphite2.so.3 (0xf6ebd000)
	libbrotlicommon.so.1 => /lib/libbrotlicommon.so.1 (0xf6e9a000)
	libpcre.so.1 => /lib/libpcre.so.1 (0xf6e1f000)

Here’s the ldd for Ubuntu 2404lts

	linux-gate.so.1 (0xf365f000)
	libXcursor.so.1 => /lib/i386-linux-gnu/libXcursor.so.1 (0xf3351000)
	libXfixes.so.3 => /lib/i386-linux-gnu/libXfixes.so.3 (0xf3349000)
	libXext.so.6 => /lib/i386-linux-gnu/libXext.so.6 (0xf3333000)
	libXft.so.2 => /lib/i386-linux-gnu/libXft.so.2 (0xf3318000)
	libfontconfig.so.1 => /lib/i386-linux-gnu/libfontconfig.so.1 (0xf32c4000)
	libXinerama.so.1 => /lib/i386-linux-gnu/libXinerama.so.1 (0xf32bf000)
	libpthread.so.0 => /lib/i386-linux-gnu/libpthread.so.0 (0xf32ba000)
	libdl.so.2 => /lib/i386-linux-gnu/libdl.so.2 (0xf32b5000)
	libX11.so.6 => /lib/i386-linux-gnu/libX11.so.6 (0xf3163000)
	libpng16.so.16 => /lib/i386-linux-gnu/libpng16.so.16 (0xf3124000)
	librt.so.1 => /lib/i386-linux-gnu/librt.so.1 (0xf311f000)
	libzstd.so.1 => /lib/i386-linux-gnu/libzstd.so.1 (0xf3062000)
	libstdc++.so.6 => /lib/i386-linux-gnu/libstdc++.so.6 (0xf2de3000)
	libm.so.6 => /lib/i386-linux-gnu/libm.so.6 (0xf2cd9000)
	libgcc_s.so.1 => /lib/i386-linux-gnu/libgcc_s.so.1 (0xf2ca1000)
	libc.so.6 => /lib/i386-linux-gnu/libc.so.6 (0xf2a65000)
	libXrender.so.1 => /lib/i386-linux-gnu/libXrender.so.1 (0xf2a57000)
	libfreetype.so.6 => /lib/i386-linux-gnu/libfreetype.so.6 (0xf2983000)
	libexpat.so.1 => /lib/i386-linux-gnu/libexpat.so.1 (0xf2957000)
	libxcb.so.1 => /lib/i386-linux-gnu/libxcb.so.1 (0xf2927000)
	libz.so.1 => /lib/i386-linux-gnu/libz.so.1 (0xf290b000)
	/lib/ld-linux.so.2 (0xf3661000)
	libbz2.so.1.0 => /lib/i386-linux-gnu/libbz2.so.1.0 (0xf28f9000)
	libbrotlidec.so.1 => /lib/i386-linux-gnu/libbrotlidec.so.1 (0xf28eb000)
	libXau.so.6 => /lib/i386-linux-gnu/libXau.so.6 (0xf28e6000)
	libXdmcp.so.6 => /lib/i386-linux-gnu/libXdmcp.so.6 (0xf28df000)
	libbrotlicommon.so.1 => /lib/i386-linux-gnu/libbrotlicommon.so.1 (0xf28bc000)
	libbsd.so.0 => /lib/i386-linux-gnu/libbsd.so.0 (0xf28a6000)
	libmd.so.0 => /lib/i386-linux-gnu/libmd.so.0 (0xf2894000)

On the system that builds it:

GNU C Library (Debian GLIBC 2.31-13+deb11u13) stable release version 2.31

CentOS 10 can’t run 32 bit, but CentOS 9 does have some support.

The routine having a problem in the trace should be in the libgcc library to do a 64 bit math item. Do you know which other operating systems this binary works on? The reason is that I am seeing that there isn’t a 1:1 mapping of libraries between the two operating systems and I am not sure if something is ‘missing’ or getting mapped improperly

The system Ubuntu is mapping calls to:

libXdmcp.so.6
libbsd.so.0
libbz2.so.1.0
libexpat.so.1
libmd.so.0

And the CentOS Stream system is linking to:

libbz2.so.1
libglib-2.0.so.0
libgraphite2.so.3
libharfbuzz.so.0
liblzma.so.5
libpcre.so.1
libxml2.so.2

I think the bz2 is ok as it is just a minor change, but I am wondering if there is some other remapping which is affecting runtime.

Hello,

It seems to work on all the Debian based OSes, Debian, Ubuntu, Mint, Devuan. Multiple versions of all of them.

This type of crashing problem started when upgrading and the only upgrade to libraries here (from what I recall) is from libpng12-0 to libpng16-16 (in the past it ran under CentOS fine).

On a non gui app the problem with CentOS/RedHat has to do with moving from libncursesw5 to libncursesw6 (but that is shared library mismatch issue, no crash, it’s because CentOS is compiling as threaded and Debian non-threaded (program built on Debian based OS using the non-threaded version), but ncursesw is using the same name for both)

Thanks!