On Wed, Jul 27, 2011 at 11:34 AM, Neal Becker <ndbecker2@xxxxxxxxx> wrote: > 7. Verify that the only difference is replacing the shared libs installed via > rpm vs. the same shared libs installed without rpm. > > So something that rpm does to the shared libs (in /usr/lib64/dmtcp) is breaking > things. The only thing I can think of is strip. > > 8. Notice the error: > > dlerror() = /usr/lib64/dmtcp/libmtcp.so: undefined symbol: > mtcp_restore_start > > But it is defined! > nm -D /usr/lib64/dmtcp/libmtcp.so | grep mtcp_restore_start > 000000000000911c T mtcp_restore_start > > That was the non-working version of libmtcp.so, which has been stripped. It isn't strip. If I run strip on the version of libmtcp.so left in the build dir and copy it over /usr/lib64/dmtcp/libmtcp.so, then it also works. But that version is different from the one installed by rpm. Watch this: $ ldd -r /usr/lib64/dmtcp/libmtcp.so linux-vdso.so.1 => (0x00007fff7d7c3000) libdl.so.2 => /lib64/libdl.so.2 (0x00007f913f396000) libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f913f17b000) libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x00007f913ef65000) libc.so.6 => /lib64/libc.so.6 (0x00007f913ebcc000) /lib64/ld-linux-x86-64.so.2 (0x0000003520600000) undefined symbol: mtcp_restore_start (/usr/lib64/dmtcp/libmtcp.so) undefined symbol: dmtcp_exists (/usr/lib64/dmtcp/libmtcp.so) undefined symbol: mtcp_restore_argv_start_addr (/usr/lib64/dmtcp/libmtcp.so) undefined symbol: mtcp_sys_errno (/usr/lib64/dmtcp/libmtcp.so) undefined symbol: mtcp_get_thread_sysinfo (/usr/lib64/dmtcp/libmtcp.so) undefined symbol: mtcp_no (/usr/lib64/dmtcp/libmtcp.so) undefined symbol: mtcp_dump_tls (/usr/lib64/dmtcp/libmtcp.so) undefined symbol: mtcp_readdec (/usr/lib64/dmtcp/libmtcp.so) undefined symbol: test_and_prepare_for_forked_ckpt (/usr/lib64/dmtcp/libmtcp.so) undefined symbol: write_ckpt_to_file (/usr/lib64/dmtcp/libmtcp.so) undefined symbol: mtcp_readchar (/usr/lib64/dmtcp/libmtcp.so) $ ldd -r /tmp/libmtcp-stripped.so linux-vdso.so.1 => (0x00007fffcd3ff000) libdl.so.2 => /lib64/libdl.so.2 (0x00007f02082b3000) libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f0208098000) libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x00007f0207e82000) libc.so.6 => /lib64/libc.so.6 (0x00007f0207ae9000) /lib64/ld-linux-x86-64.so.2 (0x0000003520600000) The program /usr/lib/rpm/debugedit is used to extract debug information from ELF objects when building RPMs. It looks like it is damaging the shared object somehow. -- Jerry James http://www.jamezone.org/ -- devel mailing list devel@xxxxxxxxxxxxxxxxxxxxxxx https://admin.fedoraproject.org/mailman/listinfo/devel