[Progress] Re: Bonaire XTX [Radeon R7 260X] - no Chromium, Firefox or FreeCAD

Romick yellowrabbit2010 at gmail.com
Sun Dec 1 14:14:13 PST 2019


Hello,
I was able to correct the situation with the crash of applications and
successfully run the test program
(https://peertube.social/videos/watch/e97a6aad-731a-4e8c-a6da-e3f0d92f888e),
KiCad, FreeCAD and Chromium.
(https://peertube.social/videos/watch/b44e75a5-9929-4cf4-8551-5a4396c92eae)

Hardware acceleration was enabled by reverting commit
e8de9e94be61d3d50fc134bbde36c014f25a6a56.

The problem is this: the driver compiles the source text of the shaders with
the help of llvm, which as a result produces a buffer in the elf format.
Further, to load the shader into the GPU, the driver parses this buffer using
the elf_* (elf_memory, elf_version etc) family of functions from the shared
library /usr/local/lib/libelf.so (/usr/dports/devel/libelf).

For simple programs like cuberender and glxgears this works fine, even the X
server itself compiles and loads the shaders quite successfully. However, for
large programs like FreeCAD or small, but based on QT, the situation changes:
the fact is that these programs for some purpose use a shared library
/usr/lib/libexecinfo.so that contains functions with the same names, but
behaving differently (if the functions behaved identically, then there would be
no crashes and freezes).

To see how programs behave if they don’t have any confusion with the functions
of the elf_ family, I stupidly renamed all the functions in the internal libelf
library. As already mentioned, it helped --- I was able to run all the programs
I needed:)

But this is a bad and stupid way, and I am attaching the patch as an example
only. There must be another way to make internal functions invisible to user
space, maybe a compilation parameter or something.

P.S. I wonder if we have other internal libraries that have visible functions
with the same names as the functions from libraries from the ports. This kind
of error is very hard to find (for me at least).

==========
readelf -s /usr/lib/libexecinfo.so.1

Symbol table '.dynsym' contains 132 entries:
   Num:    Value          Size Type    Bind   Vis      Ndx Name
    35: 00000000000073b0    73 FUNC    GLOBAL DEFAULT   11 _libelf_getshdr
    36: 0000000000004fc6    60 FUNC    GLOBAL DEFAULT   11 elf_version
    37: 0000000000015b33   149 FUNC    GLOBAL DEFAULT   11 __register_frame_info_bas
    38: 000000000001209a     8 FUNC    GLOBAL DEFAULT   11 _Unwind_SetIP
    39: 0000000000014134   414 FUNC    GLOBAL DEFAULT   11 _Unwind_ForcedUnwind
    40: 0000000000004777   135 FUNC    GLOBAL DEFAULT   11 elf_flagelf
    41: 0000000000006b09  1222 FUNC    GLOBAL DEFAULT   11 _libelf_ehdr
    42: 0000000000004577   370 FUNC    GLOBAL DEFAULT   11 elf_rawdata
    43: 000000000000490f    14 FUNC    GLOBAL DEFAULT   11 elf_flagshdr
    44: 00000000000050a9   214 FUNC    GLOBAL DEFAULT   11 gelf_getshdr
    45: 0000000000003b39   665 FUNC    GLOBAL DEFAULT   11 symtab_create
    46: 0000000000005684   224 FUNC    GLOBAL DEFAULT   11 _libelf_allocate_elf
    47: 000000000000643a   738 FUNC    GLOBAL DEFAULT   11 _libelf_ar_get_translated
    48: 000000000000502e    85 FUNC    GLOBAL DEFAULT   11 gelf_fsize
    49: 000000000001207a     8 FUNC    GLOBAL DEFAULT   11 _Unwind_GetIP
    50: 0000000000004dbe    66 FUNC    GLOBAL DEFAULT   11 elf_nextscn
    51: 0000000000005d95   328 FUNC    GLOBAL DEFAULT   11 _libelf_ar_open_member
    52: 0000000000012022     8 FUNC    GLOBAL DEFAULT   11 _Unwind_GetCFA
    53: 0000000000013d35   269 FUNC    GLOBAL DEFAULT   11 __frame_state_for
    54: 0000000000015c87    24 FUNC    GLOBAL DEFAULT   11 __register_frame_info_tab
    55: 0000000000006fcf   993 FUNC    GLOBAL DEFAULT   11 _libelf_open_object
    56: 0000000000005b19   636 FUNC    GLOBAL DEFAULT   11 _libelf_ar_gethdr
    57: 00000000000048c8    71 FUNC    GLOBAL DEFAULT   11 elf_flagscn
    58: 0000000000015bc8    24 FUNC    GLOBAL DEFAULT   11 __register_frame_info
    59: 000000000000746f   152 FUNC    GLOBAL DEFAULT   11 _libelf_msize
    60: 00000000000058a9    46 FUNC    GLOBAL DEFAULT   11 _libelf_allocate_data
    61: 00000000000069b5   340 FUNC    GLOBAL DEFAULT   11 _libelf_xlate_shtype
    62: 00000000000047fe   101 FUNC    GLOBAL DEFAULT   11 elf_flagehdr
    63: 00000000000058fb   140 FUNC    GLOBAL DEFAULT   11 _libelf_allocate_scn
    64: 0000000000011a44    81 FUNC    GLOBAL DEFAULT   11 elf_hash
    65: 000000000001bda0     0 NOTYPE  GLOBAL DEFAULT  ABS _edata
    66: 00000000000040ac   964 FUNC    GLOBAL DEFAULT   11 elf_getdata
    67: 0000000000003ab7    21 FUNC    GLOBAL DEFAULT   11 backtrace_symbols
    68: 00000000000073f9   118 FUNC    GLOBAL DEFAULT   11 _libelf_fsize
    69: 000000000001202a    80 FUNC    GLOBAL DEFAULT   11 _Unwind_SetGR
    70: 0000000000005018    22 FUNC    GLOBAL DEFAULT   11 elf64_fsize
    71: 0000000000005083    19 FUNC    GLOBAL DEFAULT   11 elf32_getshdr
    72: 0000000000012082    24 FUNC    GLOBAL DEFAULT   11 _Unwind_GetIPInfo
    73: 0000000000004c7a    30 FUNC    GLOBAL DEFAULT   11 elf_ndxscn
    74: 0000000000006113   616 FUNC    GLOBAL DEFAULT   11 _libelf_ar_process_svr4_s
    75: 00000000000120b2    31 FUNC    GLOBAL DEFAULT   11 _Unwind_FindEnclosingFunc
    76: 00000000000034b7    79 FUNC    GLOBAL DEFAULT   11 backtrace
    77: 000000000000400b   140 FUNC    GLOBAL DEFAULT   11 elf_errmsg
    78: 00000000000058d7    36 FUNC    GLOBAL DEFAULT   11 _libelf_release_data
    79: 0000000000002de8     0 FUNC    GLOBAL DEFAULT    9 _init
    80: 000000000001604c     0 FUNC    GLOBAL DEFAULT   12 _fini
    81: 0000000000015c9f    27 FUNC    GLOBAL DEFAULT   11 __register_frame_table
    82: 0000000000005002    22 FUNC    GLOBAL DEFAULT   11 elf32_fsize
    83: 0000000000014615    29 FUNC    GLOBAL DEFAULT   11 _Unwind_DeleteException
    84: 0000000000015be0    33 FUNC    GLOBAL DEFAULT   11 __register_frame
    85: 00000000000046e9    71 FUNC    GLOBAL DEFAULT   11 elf_flagarhdr
    86: 0000000000004730    71 FUNC    GLOBAL DEFAULT   11 elf_flagdata
    87: 0000000000011fda    72 FUNC    GLOBAL DEFAULT   11 _Unwind_GetGR
    88: 000000000001bda0     0 NOTYPE  GLOBAL DEFAULT  ABS __bss_start
    89: 0000000000014632   138 FUNC    GLOBAL DEFAULT   11 _Unwind_Backtrace
    90: 0000000000003e43   192 FUNC    GLOBAL DEFAULT   11 elf_begin
    91: 00000000000120d9     8 FUNC    GLOBAL DEFAULT   11 _Unwind_GetTextRelBase
    92: 000000000000517f   485 FUNC    GLOBAL DEFAULT   11 gelf_update_shdr
    93: 0000000000015c01   134 FUNC    GLOBAL DEFAULT   11 __register_frame_info_tab
    94: 0000000000005364   376 FUNC    GLOBAL DEFAULT   11 gelf_getsym
    95: 0000000000011ae0   345 FUNC    GLOBAL DEFAULT   11 _libelf_memory
    96: 000000000001bfc0     0 NOTYPE  GLOBAL DEFAULT  ABS _end
    97: 00000000000054dc   424 FUNC    GLOBAL DEFAULT   11 gelf_update_sym
    98: 0000000000004863   101 FUNC    GLOBAL DEFAULT   11 elf_flagphdr
    99: 0000000000005edd   566 FUNC    GLOBAL DEFAULT   11 _libelf_ar_process_bsd_sy
   100: 0000000000003dd2   113 FUNC    GLOBAL DEFAULT   11 symtab_find
   101: 000000000000491d   699 FUNC    GLOBAL DEFAULT   11 _libelf_load_section_head
   102: 0000000000003ae9    80 FUNC    GLOBAL DEFAULT   11 symtab_destroy
   103: 0000000000006765   592 FUNC    GLOBAL DEFAULT   11 _libelf_ar_open
   104: 0000000000011a95    75 FUNC    GLOBAL DEFAULT   11 elf_memory
   105: 00000000000057d0   217 FUNC    GLOBAL DEFAULT   11 _libelf_release_elf
   106: 0000000000003692   951 FUNC    GLOBAL DEFAULT   11 backtrace_symbols_fmt
   107: 0000000000004e00   454 FUNC    GLOBAL DEFAULT   11 elf_strptr
   108: 000000000000671c    73 FUNC    GLOBAL DEFAULT   11 _libelf_ar_get_raw_name
   109: 00000000000120aa     8 FUNC    GLOBAL DEFAULT   11 _Unwind_GetRegionStart
   110: 0000000000003a49   110 FUNC    GLOBAL DEFAULT   11 backtrace_symbols_fd_fmt
   111: 000000000001b8e0   280 OBJECT  GLOBAL DEFAULT   19 _libelf
   112: 000000000001197c   200 FUNC    GLOBAL DEFAULT   11 _libelf_get_translator
   113: 0000000000004bd8   162 FUNC    GLOBAL DEFAULT   11 elf_getscn
   114: 000000000000637b   191 FUNC    GLOBAL DEFAULT   11 _libelf_ar_get_number
   115: 0000000000003acc    21 FUNC    GLOBAL DEFAULT   11 backtrace_symbols_fd
   116: 0000000000015de4    28 FUNC    GLOBAL DEFAULT   11 __deregister_frame
   117: 0000000000015e00   534 FUNC    GLOBAL DEFAULT   11 _Unwind_Find_FDE
   118: 00000000000120d1     8 FUNC    GLOBAL DEFAULT   11 _Unwind_GetDataRelBase
   119: 0000000000015cba   284 FUNC    GLOBAL DEFAULT   11 __deregister_frame_info_b
   120: 0000000000005096    19 FUNC    GLOBAL DEFAULT   11 elf64_getshdr
   121: 00000000000120a2     8 FUNC    GLOBAL DEFAULT   11 _Unwind_GetLanguageSpecif
   122: 0000000000013e43   753 FUNC    GLOBAL DEFAULT   11 _Unwind_RaiseException
   123: 0000000000004c98   294 FUNC    GLOBAL DEFAULT   11 elf_newscn
   124: 0000000000014470   421 FUNC    GLOBAL DEFAULT   11 _Unwind_Resume_or_Rethrow
   125: 0000000000005987   402 FUNC    GLOBAL DEFAULT   11 _libelf_release_scn
   126: 0000000000005764   108 FUNC    GLOBAL DEFAULT   11 _libelf_init_elf
   127: 00000000000142d2   414 FUNC    GLOBAL DEFAULT   11 _Unwind_Resume
   128: 0000000000003f03   264 FUNC    GLOBAL DEFAULT   11 elf_end
   129: 0000000000004470   263 FUNC    GLOBAL DEFAULT   11 elf_newdata
   130: 0000000000015dd6    14 FUNC    GLOBAL DEFAULT   11 __deregister_frame_info
   131: 0000000000004097    21 FUNC    GLOBAL DEFAULT   11 elf_errno
==========



-- 
  with best regards,    
  Yellow Rabbit @yrabbit at mastodon.sdf.org
  DragonFly 5.5-DEVELOPMENT x86_64
-------------- next part --------------
A non-text attachment was scrubbed...
Name: IMG_20191202_072951_HDR-min.jpg
Type: image/jpeg
Size: 1415840 bytes
Desc: not available
URL: <http://lists.dragonflybsd.org/pipermail/users/attachments/20191202/37f4af34/attachment-0004.jpg>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: IMG_20191202_072907_HDR-min.jpg
Type: image/jpeg
Size: 1044858 bytes
Desc: not available
URL: <http://lists.dragonflybsd.org/pipermail/users/attachments/20191202/37f4af34/attachment-0005.jpg>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: libelf.patch
Type: text/x-diff
Size: 119167 bytes
Desc: not available
URL: <http://lists.dragonflybsd.org/pipermail/users/attachments/20191202/37f4af34/attachment-0002.bin>


More information about the Users mailing list