Přerušení write při startu vlákna

Pavel Kankovsky peak na argo.troja.mff.cuni.cz
Středa Březen 14 15:42:27 CET 2007


On Tue, 13 Mar 2007, Ladislav Vaiz wrote:

> Jeden thread zapisuje do /dev/dsp funkcí write.  Stává se, že se
> funkce write ukončí aniž by zapsala požadovaný počet bytů. Vrátí
> obecně různé kladné číslo, menší než počet bytů.
> Experimentálně jsem došel k tomu, že se to děje při vytváření dalších 
> threadů pomocí g_thread_create() a navíc jen pod gdb.

Velmi pravděpodobně přijde nějaký signál, který syscall přeruší.

To, že se to projevuje jen pod gdb je trochu divné. Je možné, že se ten
signál posílá jen při ladění (z nějakých technických důvodů), nebo že je
tam race condition, která se projevuje jen za určitých podmínek (když
gdb ten signál přibrzdí).

Zkuste pod gdb zadat "handle all print" a uvidíte, jestli něco uvidíte. :)
(Pod strace není žádný signál vidět?)

--Pavel Kankovsky aka Peak  [ Boycott Microsoft--http://www.vcnet.com/bms ]
"Resistance is futile. Open your source code and prepare for assimilation."




Další informace o konferenci Linux