----- Original Message -----
> From: "Cyril Hrubis" <[email protected]>
> To: "Jan Stancek" <[email protected]>
> Cc: [email protected]
> Sent: Thursday, 16 October, 2014 3:01:28 PM
> Subject: Re: [LTP] [PATCH] doc: document tst_checkpoint_create and 
> tst_checkpoint_init
> 
> We should also add:
> 
> IMPORTANT: Be wary that using single checkpoint to signal child/parent
> followed
>            immediately by wait for parent/child creates an race condtion
>          between opening the pipe and reading from it (the process
>          writing to the fifo may may be the wery same process that
>          reads from it and the checkpoint code will exit the test
>          with error). You are advised to use two checkpoints in this
>          case.
> 

I thought we had this issue only in parent:

---------------------------------------------------------------------------------------------------
                parent                        |          child
                                              | tst_checkpoint_child_wait
                                              |    - has to wait until parent 
opens pipe for write
tst_checkpoint_signal_child (NONBLOCK write)  | 
tst_checkpoint_parent_wait (NONBLOCK read)    |
  - parent now races on read with child       |
---------------------------------------------------------------------------------------------------

because child is opening always in blocking mode, it will always wait until 
other
side is opened as well:
---------------------------------------------------------------------------------------------------
                parent                        |          child
                                              | tst_checkpoint_signal_parent
                                              |    - has to wait until parent 
opens pipe for read
tst_checkpoint_parent_wait (NONBLOCK read)    |
  - reads from FIFO                           |
                                              | tst_checkpoint_child_wait
                                              |    - has to wait until parent 
opens pipe for write
tst_checkpoint_signal_child (NONBLOCK write)  |   
  - at this point first byte was already read |
    from FIFO, parent writes second byte      |
                                              |    - and only now will child 
succeed opening pipe
---------------------------------------------------------------------------------------------------

Am I missing something?

Regards,
Jan

> --
> Cyril Hrubis
> [email protected]
> 

------------------------------------------------------------------------------
Comprehensive Server Monitoring with Site24x7.
Monitor 10 servers for $9/Month.
Get alerted through email, SMS, voice calls or mobile push notifications.
Take corrective actions from your mobile device.
http://p.sf.net/sfu/Zoho
_______________________________________________
Ltp-list mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/ltp-list

Reply via email to