Hi,
OS: AIX 4.3.2
Compiler: IBM C and C++ Compilers, version 3.6.6 (xlc 3.6.6)
Problem:
Any program using the libgtk library crashes under AIX.
Here's what I did.
(1) Downloaded glib-1.2.6. configured, using CC=xlc_r.
If you don't use xlc_r, the re-entrant libc libraries won't
get linked in and things will crash.
(2) In config.h, had to change:
#undef HAVE_GETPWUID_R_POSIX
to:
#define HAVE_GETPWUID_R_POSIX 1
getpwuid_r() changed to the POSIX compliant version in AIX 4.3,
and the configure script does not correctly detect this.
If you don't do this, things will crash in gutils.c, because
the wrong parameters to getpwuid_r() are being passed.
(3) After (1) and (2), ran testgdate, testgparser, testglib, and
the tests passed.
(4) Downloaded gtk+-1.2.6, configured, and built.
Now, whenever I compile any program against the gtk libraries,
things coredump in gdk_init_check().
For example, in gtk+-1.2.6/examples/base:
% ./base
Segmentation fault (core dumped)
% dbx base core
readding symbolic information ...
[using memory image in core]
Segmentation fault in gdk_init_check at 0xd26dc884
0xd26dc884 (gdk_init_check+0x8) 800c0000 lwz r0,0x0(r12)
(dbx) where
gdk_init_check() at 0xd26dc884
gtk_init_check(0x2ff22868, 0x2ff2286c), line 199 in "gtkmain.c"
gtk_init(0x2ff22868, 0x2ff2286c), line 423 in "gtkmain.c"
main(argc = 1, argv = 0x2ff22898), line 10 in "base.c"
I tried setting assert() statements inside the beginning gdk_init_check(),
but it looks like gdk_init_check() is never called, because my assert() is
never called.
I'm stumped. Are there any AIX experts who know how to debug
shared library problems like this?
Basically this problem makes gtk unusable under AIX, so programs
like ethereal cannot be built....:(
--
Craig Rodrigues
http://www.gis.net/~craigr
rodrigc@xxxxxxxxxxxx