Modify

Opened 12 years ago

Closed 12 years ago

Last modified 4 years ago

#375 closed defect (fixed)

libltdl - problems with loading of dependant libraries

Reported by: s.zagrodzki@… Owned by: florian
Priority: normal Milestone: Barrier Breaker 14.07
Component: base system Version:
Keywords: libltdl, dlopen Cc:

Description

lt_dlopen() has problems when user_search_path is set, and loaded library has some dependant libraries (named in dependency_libs in .la file), that are in user_search_path but not in system library path.

Situation:

  • /usr/lib/libone.{so,la}, with dependency_libs="/usr/lib/foo/libtwo.la"
  • /usr/lib/foo/libtwo.{so,la}

Application sets user_search_path with lt_dlsetsearchpath(/usr/lib/foo). Then it calls lt_dlopen(libone.la). lt_dlopen runs dlopen(libone.so), that doesn't use user_search_path.

This seems to be result of undefined LTDL_DLOPEN_DEPLIBS (as set by AC_LTDL_SYS_DLOPEN_DEPLIBS macro in libltdl/acinclude.m4).
When LTDL_DLOPEN_DEPLIBS is set to 1, lt_dlopen loads required libraries by itself, using correct search path.

A quick solution that worked for me is a patch for libtool that replaces AC_LTDL_SYS_DLOPEN_DEPLIBS in libltdl/acinclude.m4 with:

AC_DEFUN([AC_LTDL_SYS_DLOPEN_DEPLIBS],
 [AC_DEFINE([LTDL_DLOPEN_DEPLIBS], [1],
    [Define if the OS needs help to load dependent libraries for dlopen().])
])# AC_LTDL_SYS_DLOPEN_DEPLIBS

Attachments (0)

Change History (4)

comment:1 Changed 12 years ago by kaloz

  • Milestone set to 2.0

comment:2 Changed 12 years ago by florian

  • Owner changed from developers to florian
  • Status changed from new to assigned

comment:3 Changed 12 years ago by florian

  • Resolution set to fixed
  • Status changed from assigned to closed

Fixed in [3659], thanks !

comment:4 Changed 4 years ago by jow

  • Milestone changed from Attitude Adjustment 12.09 to Barrier Breaker 14.07

Milestone Attitude Adjustment 12.09 deleted

Add Comment

Modify Ticket

Action
as closed .
The resolution will be deleted. Next status will be 'reopened'.
Author


E-mail address and user name can be saved in the Preferences.

 
Note: See TracTickets for help on using tickets.