Using ProcMon on WinXP, you can see that the different processes
interleave the writes but in blocks of 4096 bytes. The remaining 929
bytes will sometimes be written after another processes 4096/929
bytes.

Locking IS required here.

On 05/04/07, Richard Quadling <[EMAIL PROTECTED]> wrote:
Using PHP 5.2.2-dev (cli) (built: Mar 23 2007 07:02:57) I can
replicate the problem on Windows.

Using this single line command at the CMD prompt:

for %x in (A B C D E F G H I J K L M N O P Q R S T U V W X Y Z) do
start php -r 
"ini_set('error_log','/tmp/test.log');for($i=0;$i<100;$i++)error_log(str_repeat('%x',5000));"

The log file has many broken lines.

On 05/04/07, Ilia Alshanetsky <[EMAIL PROTECTED]> wrote:
> Rasmus,
>
> Sorry for the delay in the reply. According to my tests on linux
> using the sample script provided by the original bug reporter having
> no lock causes a problem when the error message is >4k in length. In
> this case multiple buffers are used and corruption can happen (it did
> on a dual cpu machine with 10 error log writing threads running),
> which is why I feel the lock is needed.
>
>
> On 5-Apr-07, at 1:29 AM, Rasmus Lerdorf wrote:
>
> > Matt Wilmas wrote:
> >> Hi,
> >>
> >> Maybe just a Windows problem if it wasn't noticed yet, but I was
> >> compiling
> >> the latest 5.2 snapshot and got:
> >>
> >> main.obj : error LNK2019: unresolved external symbol _php_flock
> >> referenced
> >> in function _php_log_err
> >> Release_TS\php5ts.dll : fatal error LNK1120: 1 unresolved externals
> >>
> >> Caused by this recent commit, http://news.php.net/php.cvs/43683,
> >> and I
> >> commented the php_flock line as a workaround.  The Windows 5.2
> >> snapshots
> >> haven't been updated because of this either, of course.
> >
> > I see no reason for that lock at all as I commented when this was
> > committed, but Ilia never replied.  This is a single write
> > operation now
> > since those fprintf's are now one, so that part of the fix is good,
> > but
> > the lock call is not needed since single writes in append mode are
> > atomic, even on Windows.
> >
> > So, your work around is fine and should actually be committed.
> >
> > -Rasmus
> >
> > --
> > PHP Internals - PHP Runtime Development Mailing List
> > To unsubscribe, visit: http://www.php.net/unsub.php
> >
>
> Ilia Alshanetsky
>
> --
> PHP Internals - PHP Runtime Development Mailing List
> To unsubscribe, visit: http://www.php.net/unsub.php
>
>


--
-----
Richard Quadling
Zend Certified Engineer : http://zend.com/zce.php?c=ZEND002498&r=213474731
"Standing on the shoulders of some very clever giants!"



--
-----
Richard Quadling
Zend Certified Engineer : http://zend.com/zce.php?c=ZEND002498&r=213474731
"Standing on the shoulders of some very clever giants!"

--
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to