On Thu, Aug 26, 2010 at 05:24:10PM -0500, Kumar Appaiah wrote:
> And here is the backtrace with libltdl compiled with debugging
> information:
Here is my final analysis:
After building all libraries with debug symbols, here is the
backtrace:
(gdb) back full
#0 0x00007ffff4b7c86b in tryall_dlopen (phandle=0x7fffffffd720,
filename=0x66e6d0 "/usr/lib/scim-1.0/1.4.0/Config/socket.so", advise=0x66e3d0,
vtable=0x0) at libltdl/ltdl.c:434
loader = 0x617cb0
loader_vtable = 0x7ffff6835375
handle = 0x66e4b0
saved_error = 0x0
errors = 0
#1 0x00007ffff4b7e5fe in try_dlopen (phandle=0x7fffffffd7c8, filename=0x66e528
"/usr/lib/scim-1.0/1.4.0/Config/socket", ext=0x66e445 ".so", advise=0x66e3d0)
at libltdl/ltdl.c:1449
saved_error = 0x0
archive_name = 0x0
canonical = 0x66e420 "/usr/lib/scim-1.0/1.4.0/Config/socket.so"
base_name = 0x66e43f "socket.so"
dir = 0x66e480 "/usr/lib/scim-1.0/1.4.0/Config/"
name = 0x66e460 "socket"
attempt = 0x66e6d0 "/usr/lib/scim-1.0/1.4.0/Config/socket.so"
errors = 0
newhandle = 0x66e4b0
__PRETTY_FUNCTION__ = "try_dlopen"
#2 0x00007ffff4b7ecc5 in lt_dlopenadvise (filename=0x66e528
"/usr/lib/scim-1.0/1.4.0/Config/socket", advise=0x66e3d0) at libltdl/ltdl.c:1658
handle = 0x66e4b0
errors = 1
saved_error = 0x0
#3 0x00007ffff7b3cc0f in scim::Module::load (this=0x66e370, name=...,
type=...) at scim_module.cpp:178
symbol = {static npos = 18446744073709551615, _M_dataplus =
{<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data
fields>}, <No data fields>}, _M_p = 0x300000000 <Address 0x300000000 out of
bounds>}}
paths = {<std::_Vector_base<std::basic_string<char,
std::char_traits<char>, std::allocator<char> >,
std::allocator<std::basic_string<char, std::char_traits<char>,
std::allocator<char> > > >> = {
_M_impl = {<std::allocator<std::basic_string<char,
std::char_traits<char>, std::allocator<char> > >> =
{<__gnu_cxx::new_allocator<std::basic_string<char, std::char_traits<char>,
std::allocator<char> > >> = {<No data fields>}, <No data fields>}, _M_start =
0x66e650, _M_finish = 0x66e660, _M_end_of_storage = 0x66e660}}, <No data
fields>}
it = {_M_current = 0x66e650}
module_path = {static npos = 18446744073709551615, _M_dataplus =
{<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data
fields>}, <No data fields>}, _M_p = 0x66e528
"/usr/lib/scim-1.0/1.4.0/Config/socket"}}
new_handle = 0x0
new_init = 0x7ffff50dfe50
new_exit = 0x66e370
#4 0x00007ffff7b0c065 in scim::ConfigModule::load (this=0x66e370, name=...) at
scim_config_module.cpp:50
No locals.
#5 0x00007ffff7b0bfee in ConfigModule (this=0x66e370, name=...) at
scim_config_module.cpp:43
No locals.
#6 0x00007ffff5b1d61a in SocketServerThread (this=0x66e090, parent=0x66dc30,
args=...) at src/socketserverthread.cpp:40
exitChecking = 0x7fffffffdd80
#7 0x00007ffff5b271ed in SkimPluginManager (this=0x66dc30, includePlugins=...,
excludePlugins=..., otherArgs=..., name=0x0) at src/skimpluginmanager.cpp:203
display = {static null = {static null = <same as static member of an
already seen type>, d = 0x60b400, static shared_null = 0x60b400}, d = 0x66e060,
static shared_null = 0x60b400}
socketServerStarted = false
#8 0x0000000000403a89 in main (argc=1, argv=0x7fffffffdec8) at src/main.cpp:147
fake_arg1 = 0x40516a "--noxim"
fake_argv = {0x7fffffffe1dd "skim", 0x40516b "-noxim", 0x0, 0x0, 0x0,
0x0, 0x0, 0x0, 0x0, 0x0}
p = <incomplete type>
np = <incomplete type>
enabledPlugins = {<QValueList<QString>> = {sh = 0x6196b0}, <No data
fields>}
disabledPlugins = {<QValueList<QString>> = {sh = 0x6199b0}, <No data
fields>}
kAppMainThread = 0x619a30
curarg = {static null = {static null = <same as static member of an
already seen type>, d = 0x60b400, static shared_null = 0x60b400}, d = 0x60b400,
static shared_null = 0x60b400}
verbose_level = 0
about = {mAppName = 0x404f29 "skim", mProgramName = 0x404f24 "SKIM",
mVersion = 0x404f00 "1.4.5 (compiled with libscim 1.4.9)", mShortDescription =
0x405260 "KDE Frontend for SCIM Input Method Platform", mLicenseKey = 1,
mCopyrightStatement = 0x404fba "(C) 2004 - 2006 LiuCougar",
mOtherText = 0x404f60 "IRC:\nserver: irc.freenode.net / channel:
#scim\n\nFeedback:\[email protected]", mHomepageAddress =
0x404f42 "http://www.scim-im.org",
mBugEmailAddress = 0x404f2e "[email protected]", mAuthorList = {sh
= 0x617ff0}, mCreditList = {sh = 0x618050}, mLicenseText = 0x0, d = 0x6180b0}
otherArgs = {<QValueList<QString>> = {sh = 0x618480}, <No data fields>}
args = 0x619630
verbose_raw = {static null = {static null = <same as static member of
an already seen type>, d = 0x60b400, static shared_null = 0x60b400}, d =
0x6198c0, static shared_null = 0x60b400}
Now, the tryall_dlopen dfailure made me suspicious, and I stepped
through the file, and this is what I observe:
This line works fine: libltdl/ltdl.c:419
lt_dlloader loader = lt_dlloader_next (0);
Then this also works fine:
427 loader_vtable = lt_dlloader_get (loader);
But then, when I try to print the value of loader_vtable, here is what I get:
(gdb) print *loader_vtable
$40 = {name = 0x616f6c6572706c64 <Address 0x616f6c6572706c64 out of bounds>,
sym_prefix = 0x726564616f6c0064 <Address 0x726564616f6c0064 out of bounds>,
module_open = 0x6c616974696e6920, module_close = 0x206e6f6974617a69, find_sym =
0x640064656c696166,
dlloader_init = 0x7573206e65706f6c, dlloader_exit = 0x6f6e2074726f7070,
dlloader_data = 0x616c696176612074, priority = 6646882}
And, more suspiciously, if I view it as a string:
(gdb) print (char *)loader_vtable
$41 = 0x7ffff6835375 "dlpreload"
Some help from a libtool expert would be appreciated.
Thanks, and sorry for not being able to solve this bug.
Kumar
--
To UNSUBSCRIBE, email to [email protected]
with a subject of "unsubscribe". Trouble? Contact [email protected]