<html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;" class="">This is because RTL locks out heap operations.  For ELF files <i class="">rtems_rtl_alloc_lock() </i>calls <i class="">rtem_rtl_alloc_heap() </i>and that calls <i class="">_RTEMS_Lock_allocator()</i> which locks the heap.  Then RTL calls <i class="">read() </i>and the NFS threads try to use the heap. <div class=""><div class=""><div class=""><br class=""></div><div class=""><div class="">(gdb) up</div><div class="">#1  0x00135394 in rtems_rtl_alloc_lock ()</div><div class="">    at /home/dufault/development/rtems/kernel/rtems/c/src/../../cpukit/libdl/rtl-allocator.c:119</div><div class="">119<span class="Apple-tab-span" style="white-space: pre;"> </span>    rtl->allocator.allocator (RTEMS_RTL_ALLOC_LOCK,</div><div class="">(gdb) print rtl->allocator.allocator</div><div class="">$469 = (rtems_rtl_allocator) 0x1357c5 <rtems_rtl_alloc_heap></div><div class="">(gdb) </div><div class=""><br class=""></div></div></div><div><br class=""><blockquote type="cite" class=""><div class="">On Apr 26, 2019, at 17:35 , Peter Dufault <<a href="mailto:dufault@hda.com" class="">dufault@hda.com</a>> wrote:</div><br class="Apple-interchange-newline"><div class=""><div class="">I found this trying to work on "#3740: Libld does not load incrementially linked object file”.  When I updated it hung loading the text segment (line 1005 in rtl-elf.c, hard hang, debug output below).  I tracked it down to a change that adds locking to the allocator.<br class=""><br class="">- BSP: xilinx_zynq_a9_qemu.  Followed instructions in rtems-libbsd README.md.<br class="">- rtems version: works in bdec62c, broken in 22afb03.<br class="">- rtems-libbsd: You need to go back to before renaming of some SMP symbols, I went back to 5432c6b.<br class=""><br class="">**** This is the change that broke it:<br class="">[dufault@gen6 rtems]$ git log --pretty=format:"%h %ad %s" bdec62c...22afb03<br class="">22afb03 Mon Feb 18 11:46:22 2019 +1100 libdl/alloc: Add a locking interface to the allocator.<br class="">[dufault@gen6 rtems]$ <br class=""><br class="">**** Loading works in bdec62c:<br class="">-> ld 0,0,"foo.o"<br class="">value = 4070648 = 0x3e1cf8<br class="">-> foo()<br class="">FOO<br class="">value = 10 = 0xa<br class="">-> <br class=""><br class="">**** Loading hangs in 22afb03:<br class="">-> ld 0,0,”foo.o”<br class="">**** HANG<br class=""><br class="">**** GDB output during hang and info on (extremely simple) downloaded object.<br class=""><br class="">In GDB attached to qemu you see the hang loading the text segment at line 1005 of rtl-elf.c:<br class=""><br class="">(gdb) target remote :1234<br class="">Remote debugging using :1234<br class="">bsp_start_vector_table_end ()<br class="">    at /home/dufault/development/rtems/kernel/rtems/c/src/lib/libbsp/arm/xilinx-zynq/../../../../../../bsps/arm/shared/start/start.S:146<br class="">146<span class="Apple-tab-span" style="white-space:pre">        </span><span class="Apple-tab-span" style="white-space:pre">    </span>mov<span class="Apple-tab-span" style="white-space:pre"> </span>r5, r1<span class="Apple-tab-span" style="white-space:pre">      </span><span class="Apple-tab-span" style="white-space:pre">    </span>/* machine type number or ~0 for DT boot */<br class="">(gdb) b rtl-elf.c:1005<br class="">Breakpoint 1 at 0x13a0a6: file /home/dufault/development/rtems/kernel/rtems/c/src/../../cpukit/libdl/rtl-elf.c, line 1005.<br class="">(gdb) c<br class="">Continuing.<br class=""><br class="">Breakpoint 1, rtems_rtl_elf_loader (obj=0x3e1cf8, fd=43, sect=0x3e1eb8, data=0x2928a8)<br class="">    at /home/dufault/development/rtems/kernel/rtems/c/src/../../cpukit/libdl/rtl-elf.c:1005<br class="">1005<span class="Apple-tab-span" style="white-space:pre">   </span>    ssize_t r = read (fd, base_offset, len);<br class="">(gdb) next<br class="">^C *** HANG HERE ***<br class="">Program received signal SIGINT, Interrupt.<br class="">0x0015bd4a in _CPU_Thread_Idle_body (ignored=0)<br class="">    at /home/dufault/development/rtems/kernel/rtems/c/src/../../cpukit/score/cpu/arm/armv7-thread-idle.c:32<br class="">32<span class="Apple-tab-span" style="white-space:pre">        </span>    __asm__ volatile ("wfi");<br class="">(gdb) <br class=""><br class="">**** Info on downloaded object.  It’s just a simple “.o” file with extra symbols stripped.<br class=""><br class="">Zynq dufault@gen6 fubar]$ cat foo.c<br class="">#include <stdio.h><br class="">extern void foo(void);<br class="">void foo(void) {<br class="">    puts("FOO\n");<br class="">}<br class="">Zynq dufault@gen6 fubar]$ arm-rtems5-gcc -march=armv7-a -mthumb -c foo.c<br class="">Zynq dufault@gen6 fubar]$ arm-rtems5-strip --strip-unneeded foo.o<br class="">Zynq dufault@gen6 fubar]$ arm-rtems5-readelf --all foo.o<br class="">ELF Header:<br class="">  Magic:   7f 45 4c 46 01 01 01 00 00 00 00 00 00 00 00 00 <br class="">  Class:                             ELF32<br class="">  Data:                              2's complement, little endian<br class="">  Version:                           1 (current)<br class="">  OS/ABI:                            UNIX - System V<br class="">  ABI Version:                       0<br class="">  Type:                              REL (Relocatable file)<br class="">  Machine:                           ARM<br class="">  Version:                           0x1<br class="">  Entry point address:               0x0<br class="">  Start of program headers:          0 (bytes into file)<br class="">  Start of section headers:          552 (bytes into file)<br class="">  Flags:                             0x5000000, Version5 EABI<br class="">  Size of this header:               52 (bytes)<br class="">  Size of program headers:           0 (bytes)<br class="">  Number of program headers:         0<br class="">  Size of section headers:           40 (bytes)<br class="">  Number of section headers:         11<br class="">  Section header string table index: 10<br class=""><br class="">Section Headers:<br class="">  [Nr] Name              Type            Addr     Off    Size   ES Flg Lk Inf Al<br class="">  [ 0]                   NULL            00000000 000000 000000 00      0   0  0<br class="">  [ 1] .text             PROGBITS        00000000 000034 000014 00  AX  0   0  2<br class="">  [ 2] .rel.text         REL             00000000 0001bc 000018 08   I  8   1  4<br class="">  [ 3] .data             PROGBITS        00000000 000048 000000 00  WA  0   0  1<br class="">  [ 4] .bss              NOBITS          00000000 000048 000000 00  WA  0   0  1<br class="">  [ 5] .rodata           PROGBITS        00000000 000048 000005 00   A  0   0  4<br class="">  [ 6] .comment          PROGBITS        00000000 00004d 000065 01  MS  0   0  1<br class="">  [ 7] .ARM.attributes   ARM_ATTRIBUTES  00000000 0000b2 00002f 00      0   0  1<br class="">  [ 8] .symtab           SYMTAB          00000000 0000e4 0000c0 10      9  10  4<br class="">  [ 9] .strtab           STRTAB          00000000 0001a4 000015 00      0   0  1<br class="">  [10] .shstrtab         STRTAB          00000000 0001d4 000051 00      0   0  1<br class="">Key to Flags:<br class="">  W (write), A (alloc), X (execute), M (merge), S (strings), I (info),<br class="">  L (link order), O (extra OS processing required), G (group), T (TLS),<br class="">  C (compressed), x (unknown), o (OS specific), E (exclude),<br class="">  y (purecode), p (processor specific)<br class=""><br class="">There are no section groups in this file.<br class=""><br class="">There are no program headers in this file.<br class=""><br class="">There is no dynamic section in this file.<br class=""><br class="">Relocation section '.rel.text' at offset 0x1bc contains 3 entries:<br class=""> Offset     Info    Type            Sym.Value  Sym. Name<br class="">00000004  0000022f R_ARM_THM_MOVW_AB 00000000   .LC0<br class="">00000008  00000230 R_ARM_THM_MOVT_AB 00000000   .LC0<br class="">0000000c  00000b0a R_ARM_THM_CALL    00000000   puts<br class=""><br class="">There are no unwind sections in this file.<br class=""><br class="">Symbol table '.symtab' contains 12 entries:<br class="">   Num:    Value  Size Type    Bind   Vis      Ndx Name<br class="">     0: 00000000     0 NOTYPE  LOCAL  DEFAULT  UND <br class="">     1: 00000000     0 NOTYPE  LOCAL  DEFAULT    5 $d<br class="">     2: 00000000     0 NOTYPE  LOCAL  DEFAULT    5 .LC0<br class="">     3: 00000000     0 NOTYPE  LOCAL  DEFAULT    1 $t<br class="">     4: 00000000     0 SECTION LOCAL  DEFAULT    1 <br class="">     5: 00000000     0 SECTION LOCAL  DEFAULT    3 <br class="">     6: 00000000     0 SECTION LOCAL  DEFAULT    4 <br class="">     7: 00000000     0 SECTION LOCAL  DEFAULT    5 <br class="">     8: 00000000     0 SECTION LOCAL  DEFAULT    6 <br class="">     9: 00000000     0 SECTION LOCAL  DEFAULT    7 <br class="">    10: 00000001    20 FUNC    GLOBAL DEFAULT    1 foo<br class="">    11: 00000000     0 NOTYPE  GLOBAL DEFAULT  UND puts<br class=""><br class="">No version information found in this file.<br class="">Attribute Section: aeabi<br class="">File Attributes<br class="">  Tag_CPU_name: "7-A"<br class="">  Tag_CPU_arch: v7<br class="">  Tag_CPU_arch_profile: Application<br class="">  Tag_ARM_ISA_use: Yes<br class="">  Tag_THUMB_ISA_use: Thumb-2<br class="">  Tag_ABI_PCS_wchar_t: 4<br class="">  Tag_ABI_FP_denormal: Needed<br class="">  Tag_ABI_FP_exceptions: Needed<br class="">  Tag_ABI_FP_number_model: IEEE 754<br class="">  Tag_ABI_align_needed: 8-byte<br class="">  Tag_ABI_align_preserved: 8-byte, except leaf SP<br class="">  Tag_ABI_enum_size: int<br class="">  Tag_ABI_optimization_goals: Aggressive Debug<br class="">  Tag_CPU_unaligned_access: v6<br class=""><br class="">**** Disassembly<br class=""><br class="">Zynq dufault@gen6 fubar]$ arm-rtems5-objdump --disassemble --source foo.o<br class=""><br class="">foo.o:     file format elf32-littlearm<br class=""><br class=""><br class="">Disassembly of section .text:<br class=""><br class="">00000000 <foo>:<br class="">   0:<span class="Apple-tab-span" style="white-space:pre">      </span>b580      <span class="Apple-tab-span" style="white-space:pre"> </span>push<span class="Apple-tab-span" style="white-space:pre">        </span>{r7, lr}<br class="">   2:<span class="Apple-tab-span" style="white-space:pre">        </span>af00      <span class="Apple-tab-span" style="white-space:pre"> </span>add<span class="Apple-tab-span" style="white-space:pre"> </span>r7, sp, #0<br class="">   4:<span class="Apple-tab-span" style="white-space:pre">      </span>f240 0000 <span class="Apple-tab-span" style="white-space:pre">  </span>movw<span class="Apple-tab-span" style="white-space:pre">        </span>r0, #0<br class="">   8:<span class="Apple-tab-span" style="white-space:pre">  </span>f2c0 0000 <span class="Apple-tab-span" style="white-space:pre">  </span>movt<span class="Apple-tab-span" style="white-space:pre">        </span>r0, #0<br class="">   c:<span class="Apple-tab-span" style="white-space:pre">  </span>f7ff fffe <span class="Apple-tab-span" style="white-space:pre">  </span>bl<span class="Apple-tab-span" style="white-space:pre">  </span>0 <puts><br class="">  10:<span class="Apple-tab-span" style="white-space:pre">       </span>bf00      <span class="Apple-tab-span" style="white-space:pre"> </span>nop<br class="">  12:<span class="Apple-tab-span" style="white-space:pre">  </span>bd80      <span class="Apple-tab-span" style="white-space:pre"> </span>pop<span class="Apple-tab-span" style="white-space:pre"> </span>{r7, pc}<br class="">Zynq dufault@gen6 fubar]$ <br class=""><br class="">Peter<br class="">-----------------<br class="">Peter Dufault<br class="">HD Associates, Inc.      Software and System Engineering<br class=""><br class="">This email is delivered through the public internet using protocols subject to interception and tampering.<br class=""><br class="">_______________________________________________<br class="">devel mailing list<br class=""><a href="mailto:devel@rtems.org" class="">devel@rtems.org</a><br class="">http://lists.rtems.org/mailman/listinfo/devel</div></div></blockquote></div><br class=""><div class="">
<div style="color: rgb(0, 0, 0); letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><div style="color: rgb(0, 0, 0); letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><div style="color: rgb(0, 0, 0); letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><div style="color: rgb(0, 0, 0); letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><div style="color: rgb(0, 0, 0); letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><div style="color: rgb(0, 0, 0); letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><div style="color: rgb(0, 0, 0); letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><div style="color: rgb(0, 0, 0); letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><div style="color: rgb(0, 0, 0); letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><span class="Apple-style-span" style="border-collapse: separate; font-variant-ligatures: normal; font-variant-position: normal; font-variant-numeric: normal; font-variant-alternates: normal; font-variant-east-asian: normal; line-height: normal; border-spacing: 0px; -webkit-text-decorations-in-effect: none;"><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><span class="Apple-style-span" style="border-collapse: separate; color: rgb(0, 0, 0); font-family: Helvetica; font-style: normal; font-variant-ligatures: normal; font-variant-position: normal; font-variant-caps: normal; font-variant-numeric: normal; font-variant-alternates: normal; font-variant-east-asian: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; border-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-stroke-width: 0px;"><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><font class="Apple-style-span" size="3"><span class="Apple-style-span" style="font-size: 12px;">Peter<br class="">-----------------<br class="">Peter Dufault<br class="">HD Associates, Inc.      Software and System Engineering</span></font></div><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><font class="Apple-style-span" size="3"><span class="Apple-style-span" style="font-size: 12px;"><br class=""></span></font></div>This email is delivered through the public internet using protocols subject to interception and tampering.</span></div></span></div></div></div></div></div></div></div></div></div>
</div>
<br class=""></div></body></html>