Description of problem: The yum command printed by gdb if a corresponding -debuginfo package is not installed does not exclude non-debuginfo repositories. This is wasteful of time and bandwidth - only the debuginfo repositories will be needed. Version-Release number of selected component (if applicable): gdb-7.0.1-19.fc12.i686 How reproducible: Always Steps to Reproduce: 1. gdb $SOME_BINARY (where $SOME_BINARY does not have debugging info available) Actual results: Reading symbols from /bin/bash... warning: Unable to open "librpm.so.0" (librpm.so.0: cannot open shared object file: No such file or directory), missing debuginfos notifications will not be displayed Missing separate debuginfo for /bin/bash Try: yum --enablerepo='*-debuginfo' install /usr/lib/debug/.build-id/2a/220189f4a8087888e0bbf9d905a2ffd4bb566f.debug Expected results: The last line should say: Try: yum --disablerepo='*' --enablerepo='*-debuginfo' install /usr/lib/debug/.build-id/2a/220189f4a8087888e0bbf9d905a2ffd4bb566f.debug
Hi Seth, normally GDB prints debuginfo-install suggestion: printf (_("Missing separate debuginfos, use: %s"), "debuginfo-install"); ... plus space separated binary-rpm NVRA names. When that fails for whatever reason it prints the specific .debug files. printf (_("Missing separate debuginfo for %s\n"), binary); printf (_("Try: %s %s\n"), "yum --enablerepo='*-debuginfo' install", debug); Reporter suggests: printf (_("Try: %s %s\n"), "yum --disablerepo='*' --enablerepo='*-debuginfo' install", debug); What specific yum commands do you recommend in these cases?
umm, you can try the second command but I think it would be more useful to find out why debuginfo-install is NOT working b/c it should work and if it doesn't work I don't know why: yum --disablerepo='*' --enablerepo='*-debug*' install something would work.
(In reply to comment #2) > umm, you can try the second command And it works > but I think it would be more useful to find > out why debuginfo-install is NOT working It does work, but gdb doesn't know which package to print because it can't open librpm.so.0 or something. Agreed that it would be more useful to fix that - after all, this bug is just about the fallback behaviour. > b/c it should work and if it doesn't > work I don't know why: yum --disablerepo='*' --enablerepo='*-debug*' install > something would work. It does work. It looks up the .build-id file specified in the filelists.
The librpm.so.0 thing is bug 552941 actually.
okay, I'm confused again - why does it need to know what pkg to print? Yum can operate on dependency names, filenames, all sorts of things.
(In reply to comment #5) > okay, I'm confused again - why does it need to know what pkg to print? It doesn't, but looking up the package in the local rpm database is more efficient (at least in terms of the amount of data downloaded) than downloading the filelists for the debuginfo packages, which is what the "install the .build-id file" method entails.
it's only more efficient if it works. This seems like a made up problem.
As it is more user friendly to print just: Missing separate debuginfos, use: debuginfo-install openoffice.org-writer-3.1.1-19.22.fc12.x86_64 instead of: Try: yum --enablerepo='*-debuginfo' install /usr/lib/debug/.build-id/23/735f70ff6a0f17850cf5b1b0fb954c253ef79f.debug /usr/lib/debug/.build-id/f6/3c0e913eece98f456b01cbb7676a742abe89c4.debug /usr/lib/debug/.build-id/a7/867ff73299fdf284bf03569a4bc7959f915902.debug /usr/lib/debug/.build-id/60/4ac636301dd132e1239099176181446def1571.debug /usr/lib/debug/.build-id/e8/bbae9c9378c288cf5ce24978c836011c8397e9.debug /usr/lib/debug/.build-id/e5/7154afd5dc6f694ae83c50102e364f1247a6f6.debug /usr/lib/debug/.build-id/d2/047d609c7c8a09f268bfff20e7b0dc41d1a99c.debug /usr/lib/debug/.build-id/e5/51789e5c7b7790f83a1b80ed588aa9b5be2c56.debug /usr/lib/debug/.build-id/d8/1f9292fb831c32538176deb3f8093a1f55b175.debug /usr/lib/debug/.build-id/a3/871da7f1e528eb163d68d5e9498c6765477db9.debug /usr/lib/debug/.build-id/68/a9751e5792f3035435ba0bf8d8224f092b9657.debug /usr/lib/debug/.build-id/3a/15cadd53eb1dc99730325cb71a297c7dbc9ef8.debug /usr/lib/debug/.build-id/ce/bb6538bae0762fb724f014e73dd2105e154e2b.debug /usr/lib/debug/.build-id/f9/f31fdec214b851d88808bef944c745c437c601.debug /usr/lib/debug/.build-id/6d/a8603d1161a0eea32db44696211c91a25798e0.debug /usr/lib/debug/.build-id/4b/01f5e68faf9a2ec3bbe08e7bd24d53c766c26f.debug /usr/lib/debug/.build-id/75/cab433b9d95876dc56f9895e87e6071323d835.debug /usr/lib/debug/.build-id/14/5773e252f080ae8512521ca2457c5ef2a3f674.debug /usr/lib/debug/.build-id/76/fc6fba2e5b4ca4966980865d6e7897a3999112.debug /usr/lib/debug/.build-id/57/a42936b736756c2f1990c715f73f6ffa82471f.debug /usr/lib/debug/.build-id/32/b8218378ce4338b7879b66a36f090d62121c66.debug /usr/lib/debug/.build-id/9b/e454aabd228d5de2793a6ed4b6244b92ebfaf1.debug /usr/lib/debug/.build-id/a0/ce01b1460e226a69de1d18749ebf4c09e7edf7.debug /usr/lib/debug/.build-id/56/ea78a36ad37da50e346520058770fcd6db44a8.debug /usr/lib/debug/.build-id/b3/0862a00abab28441a23d6fa0841dc41c619a2d.debug /usr/lib/debug/.build-id/b3/611cead835d628acc998852bc6489484e5d204.debug /usr/lib/debug/.build-id/76/7e085697ca12c8e8eb75bf71d537f09cf16183.debug /usr/lib/debug/.build-id/2b/d2accb1aab47b254eeaec9e105e5f540c1b74b.debug /usr/lib/debug/.build-id/10/6dec91d91dfce155ba3ab10baf6b8207216e64.debug /usr/lib/debug/.build-id/b5/6ae86cf9471cb88dfbe6bcee158f7939e31de4.debug /usr/lib/debug/.build-id/4d/ea5ca193445535c5ead5f678d6fbc86cc90cba.debug /usr/lib/debug/.build-id/9b/138affadbb264e9b7df1d981aa8c93912508d2.debug /usr/lib/debug/.build-id/d7/923213e105745c66ae7aa8aa2508f214b2d0b4.debug /usr/lib/debug/.build-id/b0/41998585c2ceb4dd672e51113573bfa7e361b4.debug /usr/lib/debug/.build-id/31/60558c55be235e293b8dc7ff2444c1aba28080.debug /usr/lib/debug/.build-id/71/281fd05e36f4d37e37c66780d2d30dd8794d6c.debug /usr/lib/debug/.build-id/eb/c6f047f9897bf56bf437dc4b4fe3ab2283cfd8.debug /usr/lib/debug/.build-id/99/a8c12a84a486b543b3ddeff2fb39546fd4d201.debug /usr/lib/debug/.build-id/33/10fe26dd5f4140d61bbfb7a637022f620ce20b.debug /usr/lib/debug/.build-id/d2/ac47ac5dad8ec0044ac7093076c81f4a49dbc5.debug /usr/lib/debug/.build-id/48/0ef5f038466c4dcb65f1450316cb33912f2520.debug /usr/lib/debug/.build-id/34/fafaa8007ee23182c82ffdb451a09372dafb38.debug /usr/lib/debug/.build-id/b2/35494e0a9875937ebe62c8583e3b10fbb931ca.debug /usr/lib/debug/.build-id/be/24766b5a6f08df2a5144feb742eacfb519da4c.debug /usr/lib/debug/.build-id/10/a81753fdbf7a3fe0ef227ea992175200a47bb4.debug /usr/lib/debug/.build-id/d3/32132b64cece4399272ef27128508e4226c3cf.debug /usr/lib/debug/.build-id/2b/54c595ac325cc29379f6cd86c60b583a8e3003.debug /usr/lib/debug/.build-id/7c/99456ecb8fc7f2742e0eb78460ceee9c6d4711.debug /usr/lib/debug/.build-id/94/78252695c89b9f65862fd83d0ea6b9dbecc68c.debug /usr/lib/debug/.build-id/dd/5725444c0f7cf089e68daef8ac115df9f8c933.debug /usr/lib/debug/.build-id/10/f691103600d020d3ea623a3c3b8b1c80b40fce.debug /usr/lib/debug/.build-id/b1/e9b15f7e29d86b9db378334819a32dde995f15.debug /usr/lib/debug/.build-id/7b/8c25f53947b5ba265fe25509619b034c498819.debug /usr/lib/debug/.build-id/e1/bdeebd59eefe0cfb141dc5848cd2a75f8082ab.debug /usr/lib/debug/.build-id/52/0abc0894ac07a4bc111f63f2e6dae09a9cc694.debug /usr/lib/debug/.build-id/1f/b0adf35e066d7c082ac96c6ef0c63cb5ef50fe.debug /usr/lib/debug/.build-id/29/c97ed55b27cdc5da2b543c955a11b77f887fab.debug /usr/lib/debug/.build-id/f0/8ddf656e5fa9df549093adc319b2d46acc3281.debug /usr/lib/debug/.build-id/d4/7d4dfa61a5112b944f289f9ab2b054cc6a41c7.debug /usr/lib/debug/.build-id/c1/4ed58ecf4df4bed279fd3d17e5650e022a0be9.debug /usr/lib/debug/.build-id/89/25b5d3b42bb1e29b11f486008a3558d93a84d9.debug /usr/lib/debug/.build-id/f0/5133d6957c37959340b60c5c8c178fe86c0f11.debug /usr/lib/debug/.build-id/58/54584352bfe41f856bb58406c15b0fc50b8f30.debug /usr/lib/debug/.build-id/16/4e5574e8af95ccf0e712e18ebbb7f92f7c678a.debug /usr/lib/debug/.build-id/92/4e8b62539bb0f4095b20d65573c1a2c49eb9aa.debug /usr/lib/debug/.build-id/2d/a2ddda9102640f9b6a58ce477d94150b66f0a3.debug /usr/lib/debug/.build-id/a8/98a3fb45172affcae0ab33ee3c2dac05dac3c0.debug /usr/lib/debug/.build-id/f0/14b9e63fce44bee73ed9e89163d6aedf6d6195.debug /usr/lib/debug/.build-id/75/4f4f1f98fd259af7829827cc07db1adee5c324.debug /usr/lib/debug/.build-id/68/5170f3fc6a2d5cd789377a430206a57bb3278a.debug /usr/lib/debug/.build-id/15/30871273a0d1267fe4198d34d6d36615f62034.debug /usr/lib/debug/.build-id/cc/b2bc2cf981de1441b100e69ccb24c9666af879.debug /usr/lib/debug/.build-id/f2/2694a14075795bca7bcb1142b70bc4b5a92e3b.debug /usr/lib/debug/.build-id/78/aaf8650cea34330005b398dfb2c02c84d4cc00.debug /usr/lib/debug/.build-id/55/7a5aa325043b5e8f9bcd30a80fc606565a5f6c.debug /usr/lib/debug/.build-id/38/41d622c707c6bb66b1233a58adc68f3bbe775d.debug /usr/lib/debug/.build-id/91/02a277c7bac86c6e3d2721f230c57e3072750a.debug /usr/lib/debug/.build-id/50/4cbec66c74941004251433ee0f6bccee02ed5b.debug /usr/lib/debug/.build-id/b1/e11969c042712ef7dca424d53796f459ec8cef.debug /usr/lib/debug/.build-id/02/fcbb07a8fc1f383053562ae9097132b4198b49.debug /usr/lib/debug/.build-id/1f/b6532a3f3974418f3cab63d28e50622618b132.debug /usr/lib/debug/.build-id/77/86e69a247f1ad93eb69e27c8c8cfc85c53aabf.debug /usr/lib/debug/.build-id/cb/0064a859d809cda397a736837edaa66065e067.debug /usr/lib/debug/.build-id/f0/28f4eccaa709d0417b78a2afbe972379a44854.debug /usr/lib/debug/.build-id/5a/88b3ca37a32afa45eede352489b65c55bf8267.debug /usr/lib/debug/.build-id/88/bab632ea6e76ff487e3bf42e8ef6321009f442.debug /usr/lib/debug/.build-id/40/8b35f7bbdd602642ea5ed333857f474a1b209e.debug /usr/lib/debug/.build-id/7b/d507e8ca3afb5b236fcc691603ff0d076043a1.debug /usr/lib/debug/.build-id/37/cc766776578b020be6cdfec499645e57e5bb1d.debug /usr/lib/debug/.build-id/44/63001b2bc2ec94c940acaecf95b8c287a8a4df.debug /usr/lib/debug/.build-id/06/f3a7e46d14562144cfdb154dca762886ea0f18.debug /usr/lib/debug/.build-id/0e/4c7a2c412467c55e466e98b00a040228c65c66.debug /usr/lib/debug/.build-id/37/ef6947463eacf899d5180f3da09f528e686d45.debug /usr/lib/debug/.build-id/8d/3b3d2890c4a8b2b5769497e5f77a18877bb251.debug /usr/lib/debug/.build-id/f2/3dc64a5d41cb8b4112ce5d96c5f0b2c28621ec.debug /usr/lib/debug/.build-id/d8/cae46f97f0b0269e6461fabc5de0e39bb2a0b2.debug /usr/lib/debug/.build-id/57/2ac6966b4efd14d07b54e3fe1d90c09e409bb5.debug /usr/lib/debug/.build-id/44/28c08e86c6b8f5ce4da4f098949b9fa09ed281.debug /usr/lib/debug/.build-id/2c/5a2d3417091d027925c274360668574735e8b0.debug /usr/lib/debug/.build-id/62/ed12d8a9306f04602468c70a87f6dd9715cb6c.debug /usr/lib/debug/.build-id/38/2f3e2bba22cc8435494b19cccd037556a136f8.debug /usr/lib/debug/.build-id/c4/657cfcaed369bff406a6faefecb7217214219a.debug /usr/lib/debug/.build-id/1a/b55faf1681fb5c841f063bc009eb4fae66bc87.debug /usr/lib/debug/.build-id/ea/a5272c18250550048bf5884fda451cf3996b44.debug /usr/lib/debug/.build-id/b4/56fa7a8e96942b3e13a5a76263774476025762.debug /usr/lib/debug/.build-id/d6/f1cd84c1854544e39ada36c068323705f635f5.debug /usr/lib/debug/.build-id/88/8a63383cf67d7435fa0bb7625777c7df1bfc35.debug /usr/lib/debug/.build-id/5f/83c512d7ed69ad74ab02cb01519ef03b9af989.debug /usr/lib/debug/.build-id/e0/c9f394e7f2b4ffeb6a7fd20776c022a9a84546.debug /usr/lib/debug/.build-id/02/0e02067ea6111efdc2e4177a5e14686bf9fb3f.debug /usr/lib/debug/.build-id/2d/6d6a49b763d8f9c7ea7ee8902dfab818d7c7ef.debug /usr/lib/debug/.build-id/2a/8d23727d1bb17171a9af8170a749e405ef76a7.debug /usr/lib/debug/.build-id/16/fd36902aadbaf16855f95b5dac20777542bd26.debug /usr/lib/debug/.build-id/19/c5ff52032685157acf9e4d299f4b71787a98a8.debug /usr/lib/debug/.build-id/0d/52d970fdf4dfe42ebc6bb505d076a5ab3f78b2.debug /usr/lib/debug/.build-id/9e/cc28b4e190921186adb6cc71ceb9aa254866d9.debug /usr/lib/debug/.build-id/cd/9e9ff7954c334ba715896e28e819f0427ec94e.debug /usr/lib/debug/.build-id/4a/f5ff6c47a78f93f74cade5598850f7a76dc598.debug /usr/lib/debug/.build-id/9b/f0cce0cba413422e0f49e9f87c97310b6dbdd5.debug /usr/lib/debug/.build-id/8c/ca94a5f5cf24d6dbe70c85c83bb400d2d77c33.debug /usr/lib/debug/.build-id/d9/b953f7171bebfdd8d6823f91571a641589444c.debug /usr/lib/debug/.build-id/7f/323e5302d7e24b31f12a261a8909029442ed1d.debug /usr/lib/debug/.build-id/80/ffeac5e5f505fe721349fd8f42c0b308bf9787.debug /usr/lib/debug/.build-id/b0/c98b4db822d93af92dd6cdf4b7b89846e2bf2d.debug /usr/lib/debug/.build-id/21/1edc79326eb308f0aa8601e8127361f97f4d96.debug User friendly approach is about ... or ... never mind. :-)
Then how about using yum's resolvedep command: yum -d 0 resolvedep /bin/zsh 0:zsh-4.3.10-4.fc12.i686 or rpm -q --whatprovides /bin/zsh for example, if you just want to hit the localrpmdb.
You are suggesting to call external command passing it arguments as text strings and parsing its text output? Instead of a normal shared library API call? Wikipedia claims shlibs should be already available for some time: Programmers originally developed dynamic linking in the Multics operating system, starting in 1964.
Thanks for suggestion, fixed, closed.
okay apparently I'm missing the plot here. you asked me what commands I suggested. I told you. what this has to do with shared library interfaces and the year prior to my birth I have no idea. Is there some sort of language problem here? B/c I really have no idea what it is you want from me here.
(In reply to comment #12) > you asked me what commands I suggested. I told you. Yes, thanks, all I wanted to hear was your reply in (part of) Comment 2: yum --disablerepo='*' --enablerepo='*-debug*' install something would work. > what this has to do with shared library interfaces and the year prior to my > birth I have no idea. This was a reply on your Comment 9. In fact I have not understood why you made that Comment 9. I already heard some disagreements with applications using librpm.so which makes stable ABI requirements on librpm.so so I just assumed your Comment 9 was another attempt to remove the ABI dependency of applications on librpm.so. My Comment 10 was reply on your Comment 9 assuming you were requesting replacing the librpm.so ABI dependency by popen/fork/etc. scheme to remove this stable ABI requirement on librpm.so. > Is there some sort of language problem here? B/c I really have no idea what it > is you want from me here. Nothing more after your Comment 2, thanks.
(In reply to comment #13) > > what this has to do with shared library interfaces and the year prior to my > > birth I have no idea. > > This was a reply on your Comment 9. In fact I have not understood why you made > that Comment 9. I already heard some disagreements with applications using > librpm.so which makes stable ABI requirements on librpm.so so I just assumed > your Comment 9 was another attempt to remove the ABI dependency of applications > on librpm.so. Your assumption was incorrect. I wasn't making any comment one way or the other. I was giving you two simple ways to access in the information from any program whether or not the program was in C or any of the dynamic languages. > My Comment 10 was reply on your Comment 9 assuming you were > requesting replacing the librpm.so ABI dependency by popen/fork/etc. scheme to > remove this stable ABI requirement on librpm.so. No. I wasn't requesting anything. I was just trying to help. let me know if there is something else needed.
Ok, from what I can understand gdb is doing something along the lines of: 1. Program X crashes. 2. debuginfo not installed, for X, Y, Z shared objects. 3a. i. Use the rpm API to go from things like /usr/bin/gedit => gedit-1:2.28.0-1.fc12.x86_64 or /lib/libc-2.11.so => glibc-0:2.11-2.i686 ii. Print: debuginfo-install gedit-1:2.28.0-1.fc12.x86_64 glibc-0:2.11-2.i686 3b. i. Rpm lookup doesn't work, so use fallback. ii. Print: yum --enablerepo='*' install <list-of-debuginfo-files> iii. Note that this requires filelists to be downloaded. ...this bug is about putting --disablerepo='*' in "3b. ii" (due to "3b. iii"), which isn't a terrible idea, but I think there might be some better solutions: 1. We could change debuginfo-install so that gdb can print: Use: debuginfo-install /usr/bin/gedit /lib/libc-2.11.so ...you'd still probably want to do 3a, but now 3b becomes much nicer (no filelists for anything, and the command will auto. enable the correct repos.). 2. Find out why "3a. i" is failing, and fix that? 3. Have debuginfo-install understand /usr/lib/debug/.build-id/4a/f5ff6c47a78f93f74cade5598850f7a76dc598.debug files (the only benefit here is if we ever move to using repo. tags instead of suffixes to find debuginfo repos.).
I find the situation is more complicated. Despite librpm may say that /usr/bin/gedit belongs to gedit-2.28.3-1.fc12.x86_64 still the specific system /usr/bin/gedit may not be from gedit-2.28.3-1.fc12.x86_64 as the user may have overwritten the binary. In such case currently gdb suggests first debuginfo-install gedit-2.28.3-1.fc12.x86_64. But when GDB sees gedit-debuginfo is already installed and it still could not find the debuginfo it will fall back to the "always-safe" way of yum --enablerepo='*' install <list-of-debuginfo-files>. Anyway I do not think this /usr/bin/gdb logic makes too much sense to tune it to perfectionalism. It was there to make same basic build-id functionality working. Red Hat should implement proper PackageKit support for installing debuginfos user friendly graphical way in cooperation with ABRT (which has already solved it on its own without rpms) and also with Eclipse.
gdb-7.0.1-26.fc12 has been submitted as an update for Fedora 12. http://admin.fedoraproject.org/updates/gdb-7.0.1-26.fc12
gdb-7.0.1-26.fc12 has been pushed to the Fedora 12 stable repository. If problems still persist, please make note of it in this bug report.
I have to remove this --disablerepo='*' part as in some cases (Bug 981154) the yum command will install regular binaries. yum --disablerepo='*' --enablerepo='*debug*' install /usr/lib/debug/.build-id/bd/../../../../bin/gtkperf Error: Nothing to do -> yum --enablerepo='*debug*' install /usr/lib/debug/.build-id/bd/../../../../bin/gtkperf Installed: gtkperf.x86_64 0:0.40-16.fc19 The default repositories should be commonly already cached anyway. At least one should enable "metadata_expire=never" in /etc/yum.conf but that is outside of the scope of this Bug.