[RTEMS Project] #3741: libdl loading ELF objects from libbsd NFS file system ends in a deadlock

RTEMS trac trac at rtems.org
Fri May 3 00:46:02 UTC 2019


#3741: libdl loading ELF objects from libbsd NFS file system ends in a deadlock
-----------------------------------+--------------------------
 Reporter:  dufault                |       Owner:  Chris Johns
     Type:  defect                 |      Status:  accepted
 Priority:  normal                 |   Milestone:  5.1
Component:  lib/dl                 |     Version:  5
 Severity:  normal                 |  Resolution:
 Keywords:  run-time-loader libdl  |  Blocked By:
 Blocking:                         |
-----------------------------------+--------------------------

Comment (by Chris Johns):

 I have posted a reasonable solution to the bug but I think there is a
 better solution. The current trampoline processing is reloc record based
 and it should target symbol based. A trampoline to a target symbol will be
 the same set of instructions and could be shared by relocations. This
 would drop the trampoline slot count.

 A change would move away from a trampoline cache of each record to a cache
 of target symbols referenced by reloc records. The tramp check would see
 which symbols are in range and which are out of range to determine the
 number of slots to allocate. A relocation record that is not the full
 address range would still need a slot if the symbol is unresolved. The
 symbol cache entry would reference count reloc records referencing it and
 be deleted once there are no more references. The symbol cache entry would
 hold the trampoline slot number once allocated for use by other relocation
 records.

 Note, the trampoline code is transparent to the execution of the object
 code and only has the target symbol address in it therefore it can be
 shared by more than one relocation record.

 The unresolved table code may need to be split as the symbol record may
 grow the size of the record union and effect the memory footprint for
 unresolved symbols.

--
Ticket URL: <http://devel.rtems.org/ticket/3741#comment:6>
RTEMS Project <http://www.rtems.org/>
RTEMS Project


More information about the bugs mailing list