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:\nscim-u...@lists.sourceforge.net", mHomepageAddress = 
0x404f42 "http://www.scim-im.org";, 
          mBugEmailAddress = 0x404f2e "sub...@bugs.kde.org", 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 debian-bugs-dist-requ...@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org

Reply via email to