Я написал многопоточную программу, и поток был реализован таким образом, что для разветвления дочернего процесса и через этот дочерний процесс было загружено несколько модулей.
Во время моего тестирования за один раз я обнаружил, что процесс (запущенный на платформе Solaris) прерывается один раз, и это создает ошибку сегментации. Проходя через файл дампа, я действительно был шокирован, увидев, что системный вызов fork () в Solaris вызывает эту ошибку сегментации.
Ниже была трассировка стека во время прерывания fork ():
(l@5) stopped in (unknown) at 0xfe524970
0xfe524970: <bad address 0xfe524970>
(/opt/SUNWspro/bin/../WS6U2/bin/sparcv9/dbx) where
[1] 0xfe524970(0xfe524970, 0x0, 0xffffffff, 0x1, 0x0, 0x0), at 0xfe52496f
[2] run_prefork(0xfecc04b8, 0xfecc04d0, 0x242f4, 0xfea5d3c8, 0x0, 0x0), at 0xfec97ce8
[3] _ti_fork1(0x1, 0x1ab18, 0x0, 0x0, 0x0, 0x0), at 0xfea5d3c8
[4] _ti_fork(0x0, 0x0, 0x0, 0x0, 0x0, 0x0), at 0xfea5d50c
Кто-нибудь может описать, почему системный вызов fork () в solaris вызывает такое поведение?