[opensuse] gtk 64-bit problem
I'm having a problem running some gtk code. I encountered a problem installing the Perl bindings to gtk but it seems to be related to the underlying Suse gtk package. I built and ran the following C program: /* gcc `pkg-config --libs --cflags gtk+-2.0` dialog.c -o dialog */ #include <gtk/gtk.h> int main (int argc, char **argv) { GtkWidget *dialog; gtk_init (&argc, &argv); dialog = gtk_file_chooser_dialog_new ("Test", NULL, GTK_FILE_CHOOSER_ACTION_OPEN, GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, GTK_STOCK_OPEN, GTK_RESPONSE_ACCEPT, NULL); gtk_widget_destroy (dialog); return 0; } It runs to completion when run by a normal user, but hangs when run as root. Furthermore, gdb complains about internal errors. I'm not familiar with gdb but there's a log below. It hung when run, I typed CTRL-C then when I did 'bt' it said there was an internal error in gdb. I tried again (see second log) and single-stepped main but it hung immediately. The third log is the result of single-stepping as a normal user. I'm on an AMD 64 system with Suse 10.2. Has anybody seen anything like this? Can anybody reproduce it? Cheers, Dave ------------------------------------------------------- # gdb dialog GNU gdb 6.5 Copyright (C) 2006 Free Software Foundation, Inc. GDB is free software, covered by the GNU General Public License, and you are welcome to change it and/or distribute copies of it under certain conditions. Type "show copying" to see the conditions. There is absolutely no warranty for GDB. Type "show warranty" for details. This GDB was configured as "x86_64-suse-linux"...Using host libthread_db library "/lib64/libthread_db.so.1". (gdb) run Starting program: /home/dhoworth/progs/gtk/dialog-test/dialog [Thread debugging using libthread_db enabled] [New Thread 47081357781968 (LWP 20704)] Program received signal SIGINT, Interrupt. [Switching to Thread 47081357781968 (LWP 20704)] 0x00002ad1f9fe8a68 in __lll_mutex_lock_wait () from /lib64/libpthread.so.0 (gdb) bt #0 0x00002ad1f9fe8a68 in __lll_mutex_lock_wait () from /lib64/libpthread.so.0 #1 0x00002ad1f9fe4a78 in _L_mutex_lock_106 () from /lib64/libpthread.so.0 dwarf2-frame.c:521: internal-error: Unknown CFI encountered. A problem internal to GDB has been detected, further debugging may prove unreliable. Quit this debugging session? (y or n) ----------------------------------------------------------------- [as root] (gdb) break main Breakpoint 1 at 0x40081c (gdb) run Starting program: /home/dhoworth/progs/gtk/dialog-test/dialog [Thread debugging using libthread_db enabled] [New Thread 47972515281872 (LWP 20742)] [Switching to Thread 47972515281872 (LWP 20742)] Breakpoint 1, 0x000000000040081c in main () (gdb) s Single stepping until exit from function main, which has no line number information. Program received signal SIGINT, Interrupt. --------------------------------------------------------------------- [as normal user] (gdb) break main Breakpoint 1 at 0x40081c (gdb) run Starting program: /home/dhoworth/progs/gtk/dialog-test/dialog [Thread debugging using libthread_db enabled] [New Thread 47618411293648 (LWP 20761)] [Switching to Thread 47618411293648 (LWP 20761)] Breakpoint 1, 0x000000000040081c in main () (gdb) s Single stepping until exit from function main, which has no line number information. [New Thread 1082132800 (LWP 20762)] [New Thread 1090525504 (LWP 20763)] 0x00002b4f05442ae4 in __libc_start_main () from /lib64/libc.so.6 (gdb) -- To unsubscribe, e-mail: opensuse+unsubscribe@opensuse.org For additional commands, e-mail: opensuse+help@opensuse.org
I wrote:
I'm having a problem running some gtk code.
Nobody else seen anything like that? Anyway, the gtk team have asked me to do some further investigation. Specifically, they want me to run gdb on a gtk2 with symbols. This is giving me grief. Initially, I was surprised that there was no gtk2-debuginfo package. It took me a while to discover that some of them are now in a separate repository. Seems an odd idea and IMHO it could be pointed out more clearly on the wiki. But YaST won't let me install the package. When I try, it says: This would invalidate atom:gtk2-2.10.6-24.2.x86_64. atom:gtk2-2.10.6-24.2.x86_64 has unfulfilled requirements Conflict Resolution: ( ) delete gtk2 What's going on here? I notice that gtk2 is 2.10.6-24.2 while the debuginfo package is 2.10.6-13 and has a dependency: gtk2 == 2.10.6-13 But I have gtk2-devel and gtk2-doc installed and they are both 2.10.6-13. Have I missed something about configuring the repositories or is there a bug? I also added the source repositories but YaST still shows no source available. Any ideas about that? Cheers, Dave -- To unsubscribe, e-mail: opensuse+unsubscribe@opensuse.org For additional commands, e-mail: opensuse+help@opensuse.org
On Wednesday 11 July 2007 18:11:29 Dave Howorth wrote:
What's going on here? I notice that gtk2 is 2.10.6-24.2 while the debuginfo package is 2.10.6-13 and has a dependency:
gtk2 == 2.10.6-13
Yeah, debuginfo must be exactly the same build as the main package, otherwise the symbols won't match up. gtk was updated, so get the debuginfo package from the updates as well -- To unsubscribe, e-mail: opensuse+unsubscribe@opensuse.org For additional commands, e-mail: opensuse+help@opensuse.org
On Wed, 2007-07-11 at 18:47 +0200, Anders Johansson wrote:
On Wednesday 11 July 2007 18:11:29 Dave Howorth wrote:
What's going on here? I notice that gtk2 is 2.10.6-24.2 while the debuginfo package is 2.10.6-13 and has a dependency:
gtk2 == 2.10.6-13
Yeah, debuginfo must be exactly the same build as the main package, otherwise the symbols won't match up.
gtk was updated, so get the debuginfo package from the updates as well
Thanks Anders, I wondered about that, but it won't let me install the debuginfo package in the first place, so I can't update it! So ... I pressed various buttons in the checks dialogs until I got to a point where I had a checkbox that said something like 'ignore this conflict just here', then told YaST to go ahead. Now it says I have gtk2 2.10.6-24.2 (as before) and I have gtk2-debuginfo 2.10.6-13. BUT, when I go into the Online Update module, there are no patches for gtk modules. The closest I can see is for wxGTK. What am I missing? Cheers, Dave -- To unsubscribe, e-mail: opensuse+unsubscribe@opensuse.org For additional commands, e-mail: opensuse+help@opensuse.org
On Wednesday 11 July 2007 21:09:37 Dave Howorth wrote:
I pressed various buttons in the checks dialogs until I got to a point where I had a checkbox that said something like 'ignore this conflict just here', then told YaST to go ahead. Now it says I have gtk2 2.10.6-24.2 (as before) and I have gtk2-debuginfo 2.10.6-13. BUT, when I go into the Online Update module, there are no patches for gtk modules. The closest I can see is for wxGTK.
What am I missing?
Good question, I'm not sure at the moment. But I still think a simple strace will tell you where it's hanging. -- To unsubscribe, e-mail: opensuse+unsubscribe@opensuse.org For additional commands, e-mail: opensuse+help@opensuse.org
On Wed, 2007-07-11 at 21:21 +0200, Anders Johansson wrote:
On Wednesday 11 July 2007 21:09:37 Dave Howorth wrote:
I pressed various buttons in the checks dialogs until I got to a point where I had a checkbox that said something like 'ignore this conflict just here', then told YaST to go ahead. Now it says I have gtk2 2.10.6-24.2 (as before) and I have gtk2-debuginfo 2.10.6-13. BUT, when I go into the Online Update module, there are no patches for gtk modules. The closest I can see is for wxGTK.
What am I missing?
Good question, I'm not sure at the moment.
Well at least I don't feel such an idiot then! Let's hope somebody else can tell us.
But I still think a simple strace will tell you where it's hanging.
An strace shows that it's hanging on a futex: write(6, "\0", 1) = 1 write(6, "AUTH EXTERNAL 30\r\n", 18) = 18 poll([{fd=6, events=POLLIN, revents=POLLIN}], 1, -1) = 1 read(6, "OK edc29446c3e132dcf7020f13cb28b"..., 2048) = 37 poll([{fd=6, events=POLLOUT, revents=POLLOUT}], 1, -1) = 1 write(6, "BEGIN\r\n", 7) = 7 poll([{fd=6, events=POLLIN|POLLOUT, revents=POLLIN|POLLOUT|POLLHUP}], 1, -1) = 1 read(6, "", 2048) = 0 close(6) = 0 futex(0x6707d0, FUTEX_WAIT, 2, NULL But we already knew that from the backtrace from gdb. I suspect the problem is finding which module is calling that and/or not setting up conditions so it will terminate. It's a large multithreaded codebase, so I don't think it's a trivial problem - that's why they're asking for the symbolic trace. And since I can't seem to get the source either, I can't look for myself! Frustrating. Cheers, Dave -- To unsubscribe, e-mail: opensuse+unsubscribe@opensuse.org For additional commands, e-mail: opensuse+help@opensuse.org
On Wednesday 11 July 2007 21:42:47 Dave Howorth wrote:
On Wed, 2007-07-11 at 21:21 +0200, Anders Johansson wrote:
On Wednesday 11 July 2007 21:09:37 Dave Howorth wrote:
I pressed various buttons in the checks dialogs until I got to a point where I had a checkbox that said something like 'ignore this conflict just here', then told YaST to go ahead. Now it says I have gtk2 2.10.6-24.2 (as before) and I have gtk2-debuginfo 2.10.6-13. BUT, when I go into the Online Update module, there are no patches for gtk modules. The closest I can see is for wxGTK.
What am I missing?
Good question, I'm not sure at the moment.
Well at least I don't feel such an idiot then! Let's hope somebody else can tell us.
But I still think a simple strace will tell you where it's hanging.
An strace shows that it's hanging on a futex:
write(6, "\0", 1) = 1 write(6, "AUTH EXTERNAL 30\r\n", 18) = 18 poll([{fd=6, events=POLLIN, revents=POLLIN}], 1, -1) = 1 read(6, "OK edc29446c3e132dcf7020f13cb28b"..., 2048) = 37 poll([{fd=6, events=POLLOUT, revents=POLLOUT}], 1, -1) = 1 write(6, "BEGIN\r\n", 7) = 7 poll([{fd=6, events=POLLIN|POLLOUT, revents=POLLIN|POLLOUT|POLLHUP}], 1, -1) = 1 read(6, "", 2048) = 0 close(6) = 0 futex(0x6707d0, FUTEX_WAIT, 2, NULL
It also shows that it happens immediately after failing to read something from dbus This should be solvable
But we already knew that from the backtrace from gdb. I suspect the problem is finding which module is calling that and/or not setting up conditions so it will terminate. It's a large multithreaded codebase, so I don't think it's a trivial problem - that's why they're asking for the symbolic trace.
And since I can't seem to get the source either, I can't look for myself!
The source is available on download.opensuse.org -- To unsubscribe, e-mail: opensuse+unsubscribe@opensuse.org For additional commands, e-mail: opensuse+help@opensuse.org
On Wednesday 11 July 2007 22:40:40 Anders Johansson wrote:
It also shows that it happens immediately after failing to read something from dbus
This should be solvable
Well, I have the reason, but not a solution root contacts the user's dbus session (since you did an su, instead of su -, the environment variables are still there). dbus then does a getuid(), sees that someone other than the owner is trying to talk to it, and proceeds to ignore it This is why it's hanging. Bad design in gtk if you ask me But the workaround would be to go to root using su -, and then launch a new dbus using eval `dbus-launch --auto-syntax` After that, your gtk app will work as root as well as a user ...and all this just using strace :) -- To unsubscribe, e-mail: opensuse+unsubscribe@opensuse.org For additional commands, e-mail: opensuse+help@opensuse.org
On Wed, 2007-07-11 at 23:13 +0200, Anders Johansson wrote:
On Wednesday 11 July 2007 22:40:40 Anders Johansson wrote:
It also shows that it happens immediately after failing to read something from dbus
This should be solvable
Well, I have the reason, but not a solution <snip> After that, your gtk app will work as root as well as a user
...and all this just using strace :)
Congratulations! I've passed it your conclusions on. Let's hope it enables them to fix gtk+ It looks like dbus is something I should learn about. Now if I only knew how to install the gtk2-debuginfo package and how to access source packages, I'd be a happy bunny ;) Thanks for your help, Anders. Dave -- To unsubscribe, e-mail: opensuse+unsubscribe@opensuse.org For additional commands, e-mail: opensuse+help@opensuse.org
On Wed, 2007-07-11 at 22:40 +0200, Anders Johansson wrote:
The source is available on download.opensuse.org
Yes, I have <http://download.opensuse.org/distribution/10.2/repo/src-oss/suse/> in my list of repositories, but YaST still says that no source is available. And I still don't know what I'm missing! Cheers, Dave -- To unsubscribe, e-mail: opensuse+unsubscribe@opensuse.org For additional commands, e-mail: opensuse+help@opensuse.org
On Thursday 12 July 2007 00:37:48 Dave Howorth wrote:
On Wed, 2007-07-11 at 22:40 +0200, Anders Johansson wrote:
The source is available on download.opensuse.org
Yes, I have <http://download.opensuse.org/distribution/10.2/repo/src-oss/suse/> in my list of repositories, but YaST still says that no source is available. And I still don't know what I'm missing!
Oh, the yast thing is effectively disabled. From looking at the yast source, it looks like a work in progress, I guess they just forgot to remove the GUI element. Just download the src.rpm manually, if you still want to analyse this issue further -- To unsubscribe, e-mail: opensuse+unsubscribe@opensuse.org For additional commands, e-mail: opensuse+help@opensuse.org
On Thu, 2007-07-12 at 00:52 +0200, Anders Johansson wrote:
On Thursday 12 July 2007 00:37:48 Dave Howorth wrote:
On Wed, 2007-07-11 at 22:40 +0200, Anders Johansson wrote:
The source is available on download.opensuse.org
Yes, I have <http://download.opensuse.org/distribution/10.2/repo/src-oss/suse/> in my list of repositories, but YaST still says that no source is available. And I still don't know what I'm missing!
Oh, the yast thing is effectively disabled. From looking at the yast source, it looks like a work in progress, I guess they just forgot to remove the GUI element.
Just download the src.rpm manually, if you still want to analyse this issue further
I gave this a new title, for clarity. For the benefit of anybody else following who also doesn't understand, here's what I believe: (1) The starting point is that YaST in 9.3 had a column labelled source with checkboxes and clicking on them was the best method to install sources. (2) This does not work in 10.2. The column labelled source is still there but there is no mechanism in the underlying library to actually install source. YaST help does not document this or the regression. (3) There is a bug filed <https://bugzilla.novell.com/show_bug.cgi?id=264669>, which is not very encouraging. In particular, comment #5 is not very helpful, misunderstanding as it does the situation of the bug reporter. The wiki clearly says: Src-oss Source RPMs. Advanced users only. Version 10.2 http://download.opensuse.org/distribution/10.2/repo/src-oss/suse/ So the misunderstanding is not that of the person who reported the bug (it also confused me and Rajko and probably others too). Certainly, functionality that was present and working in the product but not in subsequent versions is a bug IMHO. What Stefan Hundhammer said in the bug report directly contradicts what is on the wiki. It would be nice to know what the truth is if anybody at Suse could explain it? It would also be nice to know if there are plans to replace the support for source packages in YaST that was lost after 9.3? Cheers, Dave -- To unsubscribe, e-mail: opensuse+unsubscribe@opensuse.org For additional commands, e-mail: opensuse+help@opensuse.org
On Thursday 12 July 2007 13:39:51 Dave Howorth wrote:
It would also be nice to know if there are plans to replace the support for source packages in YaST that was lost after 9.3?
It is being worked on, and the functionality will eventually be there -- To unsubscribe, e-mail: opensuse+unsubscribe@opensuse.org For additional commands, e-mail: opensuse+help@opensuse.org
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 The Wednesday 2007-07-11 at 17:11 +0100, Dave Howorth wrote:
Initially, I was surprised that there was no gtk2-debuginfo package. It took me a while to discover that some of them are now in a separate repository. Seems an odd idea and IMHO it could be pointed out more clearly on the wiki.
They do so because the debug packages make a large repository, and taking them to a separate repo saves a lot of updating time for most people, which do not need them, and have only the main repo defined.
But YaST won't let me install the package. When I try, it says:
This would invalidate atom:gtk2-2.10.6-24.2.x86_64. atom:gtk2-2.10.6-24.2.x86_64 has unfulfilled requirements Conflict Resolution: ( ) delete gtk2
What's going on here? I notice that gtk2 is 2.10.6-24.2 while the debuginfo package is 2.10.6-13 and has a dependency:
Yes, you need the debug info package of the same version as the installed library, and they don't exist. They told me that they do generate the debug package, but as they are very large and would impact badly the mirrors downstream, they no longer update the repository. Quite sad and very unfortunate for those of us needing those packages to fulfill a bug report. I was bitten by that problem, too (bugzilla #something). The only way you have is to convince some chap at SuSE to email you those debug packages, or upload them somewhere.
I also added the source repositories but YaST still shows no source available. Any ideas about that?
The sources should be available, I understand, even those of updated packages - but maybe the updated packages sources have a similar problem as the debug packages and aren't available. That would be worse, would be illegal :-/ - -- Cheers, Carlos E. R. -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.5 (GNU/Linux) Comment: Made with pgp4pine 1.76 iD8DBQFGlSqhtTMYHG2NR9URArjUAJ9PcrNXu0++cCaVsFgR1RbiumQqPACfShNe XeafhDCfh9rPv1LukIVhZJY= =KEsW -----END PGP SIGNATURE----- -- To unsubscribe, e-mail: opensuse+unsubscribe@opensuse.org For additional commands, e-mail: opensuse+help@opensuse.org
On Friday 06 July 2007 13:52:49 Dave Howorth wrote:
I'm having a problem running some gtk code. I encountered a problem installing the Perl bindings to gtk but it seems to be related to the underlying Suse gtk package. I built and ran the following C program:
Your program runs to completion for me on 10.2 64 bit, both as user and as root. I'd suggest ignoring gdb for now, and just running strace, to see where it's hanging -- To unsubscribe, e-mail: opensuse+unsubscribe@opensuse.org For additional commands, e-mail: opensuse+help@opensuse.org
participants (3)
-
Anders Johansson
-
Carlos E. R.
-
Dave Howorth