UIWebView отправляет того же User-Agent в заголовках запросов, что и мобильный Safari?

Существует также специфическое для клана решение: настроить его способ выхода с помощью переменной среды ASAN_OPTIONS. (См. https://github.com/google/sanitizers/wiki/AddressSanitizerFlags .) Для этого установите для переменной среды ASAN_OPTIONS значение abort_on_error=0. Когда дезинфицирующее средство для адреса обнаруживает проблему, тогда процесс будет работать _exit(1), а не (предположительно) abort(), и, таким образом, он, кажется, прекратит свое действие. Затем вы можете выбрать это, используя механизм cmake WILL_FAIL. (Пока неясно, почему OS X и Linux отличаются в этом отношении - но там вы идете.)

В качестве бонуса тест выходит из строя намного быстрее.

(Еще одна удобная опция который может улучшить время обработки при прохождении через cmake, заключается в том, чтобы установить ASAN_SYMBOLIZER_PATH на пустое значение, которое останавливает дезинфицирующее средство адреса, символизирующее трассировку стека. Символирование занимает некоторое время, но нет смысла делать это при запуске через cmake, (см. вывод.)

Вместо этого вручную, я создал скрипт Python, который соответствующим образом устанавливает среду на OS X (ничего не делая на Linux) и вызывает тест. Затем я добавляю каждый асин-тест с использованием макроса по линии ответа Цыварева.

macro(add_asan_test basename)
  add_executable(${basename} ${basename}.c)
  add_test(NAME test/${basename} COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/wrap_clang_sanitizer_test.py -a $)
  set_tests_properties(test/${basename} PROPERTIES WILL_FAIL TRUE)
endmacro()

Это дает простой проход / сбой как можно быстрее. Я имею обыкновение исследовать сбои, запустив соответствующий тест из оболочки вручную и изучая вывод, и в этом случае я получаю трассировку стека как обычно (и факт, выходящий из abort, немного медленнее, меньше проблемы).

(Аналогичные варианты для других дезинфицирующих средств, но я их не исследовал.)

30
задан dl. 27 January 2010 в 00:32
поделиться