GCC 8.3.0 asan в 32-разрядном окне настройки debian

#docker #gcc #debian #32bit-64bit #address-sanitizer

#докер #gcc #дистрибутив debian #32 бит-64 бит #адрес-дезинфицирующее средство

Вопрос:

Я пытаюсь использовать средство очистки адресов из GCC 8.3.0 в 32-разрядном контейнере debian buster docker, но продолжаю биться головой о стену при запуске исполняемого файла:

 ==17738==Shadow memory range interleaves with an existing memory mapping. ASan cannot proceed correctly. ABORTING. ==17738==ASan shadow was supposed to be located in the [0x1ffff000-0x3fffffff] range. ==17738==Process memory map follows:  0x29414000-0x295f3000 ...  0x5762d000-0x57a9c000   0xfff26000-0xfff47000 [stack] ==17738==End of process memory map.  

Как вы, возможно, сможете заметить, здесь, похоже, нет перекрытия. И версия ядра 5.11.0-41-generic, похоже, не имеет проблем, о которых сообщали другие люди с аналогичными симптомами.

Тот же двоичный файл безупречно работает в 64-разрядной системе Ubuntu, но 32-разрядный контейнер debian buster docker (И 64 — разрядный образ debian docker) всегда выдает вышеуказанную ошибку. Средство очистки компилируется с-fsanitize=адресом и связано с-static-libasan в контейнере debian docker.

Другие люди указали, что запуск docker с —privileged —cap-add=SYS_PTRACE должен помочь, но это, похоже, не решает проблему.