Вы можете увидеть полный список исключений ядра Mach в /usr/include/mach/exception_types.h.Большинство, если не все, сводятся к тому, что «ваша программа сделала что-то не так».
Как уже сказал вам hotpaw2, в данном случае вы ошиблись: NULL
.Вы могли бы сделать это напрямую, в своем собственном коде или косвенно, передав NULL
некоторому библиотечному методу или методу фреймворка.Например, передача NULL
в качестве одного из аргументов указателя на memcpy
является хорошим способом вызвать этот сбой.
Обратите внимание, что отправка сообщения Objective C на nil
в порядке - он ничего не делаети возвращает 0. С другой стороны, передача nil
в качестве аргумента в сообщении может быть не в порядке.Передача nil
там, где он не нужен, может привести к генерированию исключения NSE (которое вызовет сигнал SIGTRAP
, а не SIGBUS
), или это может привести к некоторому коду, в конечном итоге разыменовывающему NULL
.Или это может быть совершенно безвредным.Но вы не должны делать это, если в документации явно не сказано, что все в порядке, потому что в противном случае, даже если это работает сейчас, оно может сломаться позже.