This is the mail archive of the elfutils-devel@sourceware.org mailing list for the elfutils project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[patch] Fix non-build-id core files on build-id system


Hi Mark,

I did not verify it on older elfutils but it is apparently a regression by
some of the patches of mine.

This is easily reproducible on Fedora if you generate core file with GDB gcore
command.  GDB gcore does not dump the first ELF page containing build-id.

There is no testcase, there could be one.  OTOH this fix is clear IMO.


Thanks,
Jan


before fix:

$ ./src/unstrip -n --core=evince.gcore -e /usr/bin/evince
0x3346e00000+0x223000 ae24812f4a2f0e38e4f3a05c04542b11ff13fc2a(a)0x3346e001d8 /usr/lib64/ld-2.17.so /usr/lib/debug/usr/lib64/ld-2.17.so.debug ld-linux-x86-64.so.2
0x334ee00000+0x202000 aae267a75db7db4eb6bb5557415abcf8ed045721(a)0x334f0001d8 /usr/lib64/libgthread-2.0.so.0.3600.3 /usr/lib/debug/usr/lib64/libgthread-2.0.so.0.3600.3.debug libgthread-2.0.so.0
0x3350a00000+0x202000 9536d9f85d7040ed885d6d838b5ec9a56b573e8b(a)0x3350c001d8 /usr/lib64/libX11-xcb.so.1.0.0 /usr/lib/debug/usr/lib64/libX11-xcb.so.1.0.0.debug libX11-xcb.so.1
0x7ffff7ffd000+0x2000 406ec7b7e65c439482ef245908fa4c1c759f59cf(a)0x7ffff7ffd340 . - linux-vdso.so.1
0x3347a00000+0x21b420 ca6269ab1bb7236b6ea622550fa204d935da9d8b(a)0x3347a00248 /lib64/libpthread.so.0 /usr/lib/debug/usr/lib64/libpthread-2.17.so.debug libpthread.so.0

after fix:

$ ./src/unstrip -n --core=evince.gcore -e /usr/bin/evince
0x3346e00000+0x223000 ae24812f4a2f0e38e4f3a05c04542b11ff13fc2a(a)0x3346e001d8 /usr/lib64/ld-2.17.so /usr/lib/debug/usr/lib64/ld-2.17.so.debug ld-linux-x86-64.so.2
0x7ffff7ffd000+0x2000 406ec7b7e65c439482ef245908fa4c1c759f59cf(a)0x7ffff7ffd340 . - linux-vdso.so.1
0x7ffff11dc000+0x20c888 5ed0a296fe4b0730be68fe96c31c1a890a4a601a(a)0x7ffff11dc248 /lib64/libnss_files.so.2 /usr/lib/debug/usr/lib64/libnss_files-2.17.so.debug libnss_files.so.2
0x3348600000+0x215400 96465ae157dd8e4b708f261e70ba6dc1c14d643e(a)0x33486001d8 /lib64/libgcc_s.so.1 /usr/lib/debug/usr/lib64/libgcc_s-4.8.2-20131017.so.1.debug libgcc_s.so.1
0x3348e00000+0x263208 524d2f95d5c1ab4f17f594dddbc384ae1ac27700(a)0x3348e001d8 /lib64/libpcre.so.1 /usr/lib/debug/usr/lib64/libpcre.so.1.2.0.debug libpcre.so.1
0x3353e00000+0x205148 4283fad4047e41416789c6a56fc15561d485ccdb(a)0x3353e001d8 /lib64/libXxf86vm.so.1 /usr/lib/debug/usr/lib64/libXxf86vm.so.1.0.0.debug libXxf86vm.so.1
0x3354a00000+0x216058 6fd4502f5f8494a665ca12b2f7832f1e6fb61269(a)0x3354a001d8 /lib64/libxcb-glx.so.0 /usr/lib/debug/usr/lib64/libxcb-glx.so.0.0.0.debug libxcb-glx.so.0
0x7ffff7938000+0x20bb90 969b99bf83f5b8a7a460946f74411b3aa8ab5ed4(a)0x7ffff79381d8 /lib64/libdrm.so.2 /usr/lib/debug/usr/lib64/libdrm.so.2.4.0.debug libdrm.so.2
0x334c600000+0x211850 cbb560dab6cb1db437afbf0adbfb01a545bd3601(a)0x334c6001d8 /lib64/libudev.so.1 /usr/lib/debug/usr/lib64/libudev.so.1.3.5.debug libudev.so.1
0x3356600000+0x2259d8 9082fa8f2cee5fca9830124dfa28b47bf63fff39(a)0x3356600210 /lib64/libglapi.so.0 /usr/lib/debug/usr/lib64/libglapi.so.0.0.0.debug libglapi.so.0
0x3356a00000+0x20f658 9107eb92c0fc2249204c06fd97a3d8b2b7444ba0(a)0x3356a001d8 /lib64/libwayland-server.so.0 /usr/lib/debug/usr/lib64/libwayland-server.so.0.1.0.debug libwayland-server.so.0
0x3357200000+0x2063c0 0e78b81b7aba5d48f6cf0f06671d8cc545b1b14a(a)0x33572001d8 /lib64/libgbm.so.1 /usr/lib/debug/usr/lib64/libgbm.so.1.0.0.debug libgbm.so.1
0x3353600000+0x203058 d25c2b963600885bf1b7b6e9c599aa93618ad713(a)0x33536001d8 /lib64/libxcb-shape.so.0 /usr/lib/debug/usr/lib64/libxcb-shape.so.0.0.0.debug libxcb-shape.so.0
0x3352e00000+0x206058 360440775ace8ad1f060038dfa8dc7fa843210d1(a)0x3352e001d8 /lib64/libxcb-xfixes.so.0 /usr/lib/debug/usr/lib64/libxcb-xfixes.so.0.0.0.debug libxcb-xfixes.so.0
0x3356200000+0x204068 17fe8d356bebb2ea2b46324d479abaff83380ab7(a)0x33562001d8 /lib64/libxcb-dri2.so.0 /usr/lib/debug/usr/lib64/libxcb-dri2.so.0.0.0.debug libxcb-dri2.so.0
0x3350a00000+0x201030 9536d9f85d7040ed885d6d838b5ec9a56b573e8b(a)0x3350a001d8 /lib64/libX11-xcb.so.1 /usr/lib/debug/usr/lib64/libX11-xcb.so.1.0.0.debug libX11-xcb.so.1
0x3351600000+0x21b168 a1aa32c91bc181cb69ebc81bbfd03a1349ea4e33(a)0x33516001d8 /lib64/libgraphite2.so.3 /usr/lib/debug/usr/lib64/libgraphite2.so.3.0.1.debug libgraphite2.so.3
0x334c200000+0x2290e0 beb4e1c267494fc8f1c1e91968c17441117690cb(a)0x334c2001d8 /lib64/libexpat.so.1 /usr/lib/debug/usr/lib64/libexpat.so.1.6.0.debug libexpat.so.1
0x334e200000+0x2459e0 2dfbbf1c59cf000f447a8a954fa27a90b02a7261(a)0x334e2001d8 /lib64/libdbus-1.so.3 /usr/lib/debug/usr/lib64/libdbus-1.so.3.7.4.debug libdbus-1.so.3
0x3360600000+0x224c28 aa6d357575a6b1e798627ba87d05ea2591192bb3(a)0x33606001d8 /lib64/libatspi.so.0 /usr/lib/debug/usr/lib64/libatspi.so.0.0.1.debug libatspi.so.0
0x334b200000+0x203128 0636c58a786b4e2adab10caaace8ee85be51ca5c(a)0x334b2001d8 /lib64/libXau.so.6 /usr/lib/debug/usr/lib64/libXau.so.6.0.0.debug libXau.so.6
0x3349e00000+0x219a98 096a9d75fe22198401bacef684c6ef27a2a9977a(a)0x3349e00248 /lib64/libresolv.so.2 /usr/lib/debug/usr/lib64/libresolv-2.17.so.debug libresolv.so.2
0x3349200000+0x222848 a04a64f6c31f7a7fa78721e51dbecc73ec05986f(a)0x3349200210 /lib64/libselinux.so.1 /usr/lib/debug/usr/lib64/libselinux.so.1.debug libselinux.so.1
0x334a200000+0x207628 98af07c114710f13a6ea4ee510bb8baf997abfd4(a)0x334a2001d8 /lib64/libffi.so.6 /usr/lib/debug/usr/lib64/libffi.so.6.0.1.debug libffi.so.6
0x335ba00000+0x204070 54e016b5c74ed12cc732926e9a04388c47681b78(a)0x335ba001d8 /lib64/libgpg-error.so.0 /usr/lib/debug/usr/lib64/libgpg-error.so.0.9.0.debug libgpg-error.so.0
0x335c200000+0x27cea0 168671917fe954e3a04fe09bfb92b2bad9095374(a)0x335c2001d8 /lib64/libgcrypt.so.11 /usr/lib/debug/usr/lib64/libgcrypt.so.11.8.2.debug libgcrypt.so.11
0x3348a00000+0x207c38 4137276861a4d112640637314aa8d7df5f7eb67c(a)0x3348a00248 /lib64/librt.so.1 /usr/lib/debug/usr/lib64/librt-2.17.so.debug librt.so.1
0x3353200000+0x25d1d0 6f825e06a6ed79f86f7e4902e254e8f82ea2a927(a)0x3353200210 /lib64/libGL.so.1 /usr/lib/debug/usr/lib64/libGL.so.1.2.0.debug libGL.so.1
0x334f200000+0x209268 b995e32fa22a66b84be2e0a39fd1c34cef5b644d(a)0x334f2001d8 /lib64/libXrender.so.1 /usr/lib/debug/usr/lib64/libXrender.so.1.3.0.debug libXrender.so.1
0x3355e00000+0x2080a8 e8650ead8d5ea0e906dec794544dcf5fccbb88b3(a)0x3355e001d8 /lib64/libxcb-render.so.0 /usr/lib/debug/usr/lib64/libxcb-render.so.0.0.0.debug libxcb-render.so.0
0x3354600000+0x202058 61ea5679d37606684638dc96298a4ccbf465a5bb(a)0x33546001d8 /lib64/libxcb-shm.so.0 /usr/lib/debug/usr/lib64/libxcb-shm.so.0.0.0.debug libxcb-shm.so.0
0x3355a00000+0x221f08 df0e04a8db882e9a546942b03614cb94bf38df5e(a)0x3355a00210 /lib64/libEGL.so.1 /usr/lib/debug/usr/lib64/libEGL.so.1.0.0.debug libEGL.so.1
0x3355200000+0x2a7428 673929ab705ceb1793b5891a3624eae84c1e8511(a)0x3355200210 /lib64/libpixman-1.so.0 /usr/lib/debug/usr/lib64/libpixman-1.so.0.30.0.debug libpixman-1.so.0
0x334ea00000+0x229428 dc01f51e41eed711d28c7897df73c211398c6a38(a)0x334ea001d8 /lib64/libpng15.so.15 /usr/lib/debug/usr/lib64/libpng15.so.15.13.0.debug libpng15.so.15
0x334ca00000+0x2a26a8 d8f1820ba77c0664b6b45c051763ccf6e023dea3(a)0x334ca001d8 /lib64/libfreetype.so.6 /usr/lib/debug/usr/lib64/libfreetype.so.6.10.0.debug libfreetype.so.6
0x3352200000+0x2527d8 e4d24c9c13487718ecaa9462069657d6f59fc284(a)0x33522001d8 /lib64/libharfbuzz.so.0 /usr/lib/debug/usr/lib64/libharfbuzz.so.0.919.0.debug libharfbuzz.so.0
0x334ce00000+0x211918 518a13998b26dbc6f775e6af00d44e18873ac9f1(a)0x334ce001d8 /lib64/libXext.so.6 /usr/lib/debug/usr/lib64/libXext.so.6.4.0.debug libXext.so.6
0x335e200000+0x2071d0 4fb38142310c33bd7ae3cfeaa824d4878602229c(a)0x335e2001d8 /lib64/libwayland-cursor.so.0 /usr/lib/debug/usr/lib64/libwayland-cursor.so.0.0.0.debug libwayland-cursor.so.0
0x335de00000+0x2622f8 ac0083c85a3a2b6449e7c71de3ff95ef90a73b62(a)0x335de001d8 /lib64/libxkbcommon.so.0 - libxkbcommon.so.0
0x3356e00000+0x20c548 8fbbe37450c3d65988157fb2a0134befd5b53b21(a)0x3356e001d8 /lib64/libwayland-client.so.0 /usr/lib/debug/usr/lib64/libwayland-client.so.0.1.0.debug libwayland-client.so.0
0x3353a00000+0x2020b8 987ddb23b8b51635380e60428f50cf04fa5be93c(a)0x3353a001d8 /lib64/libXdamage.so.1 /usr/lib/debug/usr/lib64/libXdamage.so.1.1.0.debug libXdamage.so.1
0x3357a00000+0x202098 b6dde2b5ef6170127458689bdf11401c16e31a75(a)0x3357a001d8 /lib64/libXcomposite.so.1 /usr/lib/debug/usr/lib64/libXcomposite.so.1.0.0.debug libXcomposite.so.1
0x3359200000+0x20a328 ce999788b99875cf05bc8e49cf59cb47ccb1b779(a)0x33592001d8 /lib64/libXcursor.so.1 /usr/lib/debug/usr/lib64/libXcursor.so.1.0.2.debug libXcursor.so.1
0x3358600000+0x2091c8 5685de62aeec733616999e0c4d62979b8e80ffac(a)0x33586001d8 /lib64/libXrandr.so.2 /usr/lib/debug/usr/lib64/libXrandr.so.2.2.0.debug libXrandr.so.2
0x3358a00000+0x202128 fe2b7a1513251589f3536b94e0b1df39cf323efa(a)0x3358a001d8 /lib64/libXinerama.so.1 /usr/lib/debug/usr/lib64/libXinerama.so.1.0.0.debug libXinerama.so.1
0x334da00000+0x23b630 7b9e4c88b7c403e0df9dec2817076491374eb8da(a)0x334da001d8 /lib64/libfontconfig.so.1 /usr/lib/debug/usr/lib64/libfontconfig.so.1.7.0.debug libfontconfig.so.1
0x3358200000+0x214988 81056f0a0aedf73bdce2a3915e901a2f6616448e(a)0x33582001d8 /lib64/libpangoft2-1.0.so.0 /usr/lib/debug/usr/lib64/libpangoft2-1.0.so.0.3400.1.debug libpangoft2-1.0.so.0
0x335f600000+0x22ab98 123ff9454a8250146b09774b627062dd3cf8c44c(a)0x335f6001d8 /lib64/libatk-bridge-2.0.so.0 /usr/lib/debug/usr/lib64/libatk-bridge-2.0.so.0.0.0.debug libatk-bridge-2.0.so.0
0x3351200000+0x205118 c8d7df7e02163bc9c5cca7dd47c883be38d566b0(a)0x33512001d8 /lib64/libXfixes.so.3 /usr/lib/debug/usr/lib64/libXfixes.so.3.1.0.debug libXfixes.so.3
0x3351a00000+0x20f288 1fea9019115f54b6ec68adb0d40fdd3a4c9dc965(a)0x3351a001d8 /lib64/libXi.so.6 /usr/lib/debug/usr/lib64/libXi.so.6.1.0.debug libXi.so.6
0x334aa00000+0x224278 cfb1feaee9f25bab217ef00e61b5375a3acd7d22(a)0x334aa001d8 /lib64/liblzma.so.5 /usr/lib/debug/usr/lib64/liblzma.so.5.0.99.debug liblzma.so.5
0x3347e00000+0x203130 393c787f57358b1fbb8dc6fa97df7c5dc9eb2f1c(a)0x3347e00248 /lib64/libdl.so.2 /usr/lib/debug/usr/lib64/libdl-2.17.so.debug libdl.so.2
0x334be00000+0x21d368 e5cda16b7285dde2b9bff465d63d2c5030b23aac(a)0x334be001d8 /lib64/libxcb.so.1 /usr/lib/debug/usr/lib64/libxcb.so.1.1.0.debug libxcb.so.1
0x334ae00000+0x204180 c6d2f64e0a1101a7d7e762b3cfda27b3cf803ccb(a)0x334ae00210 /lib64/libuuid.so.1 /usr/lib/debug/usr/lib64/libuuid.so.1.3.0.debug libuuid.so.1
0x3347200000+0x3c0260 cf1203bfc556e2f72d1e0312167fa783daa9a265(a)0x3347200280 /lib64/libc.so.6 /usr/lib/debug/usr/lib64/libc-2.17.so.debug libc.so.6
0x3347a00000+0x21b420 ca6269ab1bb7236b6ea622550fa204d935da9d8b(a)0x3347a00248 /lib64/libpthread.so.0 /usr/lib/debug/usr/lib64/libpthread-2.17.so.debug libpthread.so.0
0x3347600000+0x301158 a5bf99449a1e32eb16494ae0400dc4c9409fc812(a)0x3347600248 /lib64/libm.so.6 /usr/lib/debug/usr/lib64/libm-2.17.so.debug libm.so.6
0x3348200000+0x215208 dfbabda73462123b964323e0e1dff03a8d7d6fca(a)0x33482001d8 /lib64/libz.so.1 /usr/lib/debug/usr/lib64/libz.so.1.2.7.debug libz.so.1
0x3349600000+0x32b540 e1a401c535a0feb8b026f35115edd0ce77fa9afd(a)0x33496001d8 /lib64/libglib-2.0.so.0 /usr/lib/debug/usr/lib64/libglib-2.0.so.0.3600.3.debug libglib-2.0.so.0
0x334a600000+0x24ef88 7a72ef88a9ac81502af8cbe0a31f604e4795a8cc(a)0x334a6001d8 /lib64/libgobject-2.0.so.0 /usr/lib/debug/usr/lib64/libgobject-2.0.so.0.3600.3.debug libgobject-2.0.so.0
0x334d200000+0x358228 cb6de6eefb469501e160697eb4d68d8ef352c59d(a)0x334d2001d8 /lib64/libgio-2.0.so.0 /usr/lib/debug/usr/lib64/libgio-2.0.so.0.3600.3.debug libgio-2.0.so.0
0x335ea00000+0x250138 4a8fa4ea06c408bc6055245734208a4d813c2fee(a)0x335ea001d8 /lib64/libsecret-1.so.0 - libsecret-1.so.0
0x334ee00000+0x201040 aae267a75db7db4eb6bb5557415abcf8ed045721(a)0x334ee001d8 /lib64/libgthread-2.0.so.0 /usr/lib/debug/usr/lib64/libgthread-2.0.so.0.3600.3.debug libgthread-2.0.so.0
0x334ba00000+0x203178 5a54a9f65b00e2ab7f6011fc787ddbe4c6996f7c(a)0x334ba001d8 /lib64/libgmodule-2.0.so.0 /usr/lib/debug/usr/lib64/libgmodule-2.0.so.0.3600.3.debug libgmodule-2.0.so.0
0x3354200000+0x31cdd8 53ce0625450aee8f0e35d43aeafb83a952d3445e(a)0x33542001d8 /lib64/libcairo.so.2 /usr/lib/debug/usr/lib64/libcairo.so.2.11200.14.debug libcairo.so.2
0x3358e00000+0x2498c0 9d8d4107806c27682193619510c9e8c145554b37(a)0x3358e001d8 /lib64/libpango-1.0.so.0 /usr/lib/debug/usr/lib64/libpango-1.0.so.0.3400.1.debug libpango-1.0.so.0
0x335d600000+0x208160 7ab5ce49c45454acd52d45e1fe35c3cea72ec9b9(a)0x335d6001d8 /lib64/libcairo-gobject.so.2 /usr/lib/debug/usr/lib64/libcairo-gobject.so.2.11200.14.debug libcairo-gobject.so.2
0x3355600000+0x222810 aaef995596d6df2a61c9af324d498a6efc7589a8(a)0x33556001d8 /lib64/libgdk_pixbuf-2.0.so.0 /usr/lib/debug/usr/lib64/libgdk_pixbuf-2.0.so.0.2800.2.debug libgdk_pixbuf-2.0.so.0
0x3359a00000+0x20c5e8 26caae48768413308f2d7bdf6de057414f71b579(a)0x3359a001d8 /lib64/libpangocairo-1.0.so.0 /usr/lib/debug/usr/lib64/libpangocairo-1.0.so.0.3400.1.debug libpangocairo-1.0.so.0
0x335a200000+0x222b38 baf83e77e1ff5cdd34b5dd46ee3c936f877658c8(a)0x335a2001d8 /lib64/libatk-1.0.so.0 /usr/lib/debug/usr/lib64/libatk-1.0.so.0.20809.1.debug libatk-1.0.so.0
0x335fa00000+0x2a7ea8 9726ba5c8bc92f7c9a53148f81a83628f10bc818(a)0x335fa001d8 /lib64/libgdk-3.so.0 /usr/lib/debug/usr/lib64/libgdk-3.so.0.800.6.debug libgdk-3.so.0
0x335ee00000+0x6cc440 8372141f5dfaf6be22a67161fdc39947767b8631(a)0x335ee001d8 /lib64/libgtk-3.so.0 /usr/lib/debug/usr/lib64/libgtk-3.so.0.800.6.debug libgtk-3.so.0
0x334d600000+0x367038 64ff7313247367f0d9b5ad7c5b1f89e457ded820(a)0x334d6001d8 /lib64/libxml2.so.2 /usr/lib/debug/usr/lib64/libxml2.so.2.9.1.debug libxml2.so.2
0x334e600000+0x207338 dfbf90303d74fc84927575f2df1a26e84ae1da43(a)0x334e6001d8 /lib64/libgailutil-3.so.0 /usr/lib/debug/usr/lib64/libgailutil-3.so.0.0.0.debug libgailutil-3.so.0
0x7ffff7b5b000+0x245ee0 3dff6698c80f3d4bd7c29882692cc8d09ce224ff(a)0x7ffff7b5b1d8 /lib64/libevview3.so.3 - libevview3.so.3
0x7ffff7da2000+0x237fa8 2b8da625d25cd04c2fb8a2b6c445cef27265b405(a)0x7ffff7da21d8 /lib64/libevdocument3.so.4 - libevdocument3.so.4
0x334b600000+0x33ae00 e24f007c70e555b5108b18b2aee2cc0f008aaeb7(a)0x334b6001d8 /lib64/libX11.so.6 /usr/lib/debug/usr/lib64/libX11.so.6.3.0.debug libX11.so.6
0x3352a00000+0x21b120 e8152e8ce343924eac53bcb13b47dcbb366cb1b7(a)0x3352a001d8 /lib64/libICE.so.6 /usr/lib/debug/usr/lib64/libICE.so.6.3.0.debug libICE.so.6
0x334de00000+0x207168 62d5a4d2fb81390000793c540a07d364d4681d0c(a)0x334de001d8 /lib64/libSM.so.6 /usr/lib/debug/usr/lib64/libSM.so.6.0.1.debug libSM.so.6
0x400000+0x264bb8 c4ebbb69667209721bde71e3491af97086dc7873(a)0x400284 /usr/bin/evince - evince

commit 0a5641d518d570021bda6f050c3832dd37a0d3ae
Author: Jan Kratochvil <jan.kratochvil@redhat.com>
Date:   Tue Nov 12 20:03:59 2013 +0100

    Fix non-build-id core files on build-id system
    
    libdwfl/
    2013-11-12  Jan Kratochvil  <jan.kratochvil@redhat.com>
    
    	Fix non-build-id core files on build-id system.
    	* link_map.c (report_r_debug): Remove valid clearing if build-id cannot
    	be read from memory.
    
    Signed-off-by: Jan Kratochvil <jan.kratochvil@redhat.com>

diff --git a/libdwfl/link_map.c b/libdwfl/link_map.c
index b094b9b..5d4d364 100644
--- a/libdwfl/link_map.c
+++ b/libdwfl/link_map.c
@@ -415,9 +415,11 @@ report_r_debug (uint_fast8_t elfclass, uint_fast8_t elfdata,
 						&buffer, &buffer_available,
 						build_id_vaddr, build_id_len,
 						memory_callback_arg))
-			/* File has valid build-id which cannot be verified
-			   in memory.  */
-			valid = false;
+			{
+			  /* File has valid build-id which cannot be read from
+			     memory.  This happens for core files without bit 4
+			     (0x10) set in Linux /proc/PID/coredump_filter.  */
+			}
 		      else
 			{
 			  if (memcmp (build_id_bits, buffer, build_id_len) != 0)

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]