I can confirm that it does fail with the single fprintf call without the lock on Win32.
Using flock() does fix the problem in my tests.
I was able to fix win build using flock() instead of php_flock() and defining HAVE_FLOCK in win32/flock.h

Rob

Richard Quadling wrote:
This test is with the multiline fprintf and no lock.

Adding the php_flock() has stalled the build process for Win32 (I
can't build on Win32 as I don't know how!).



On 05/04/07, Rasmus Lerdorf <[EMAIL PROTECTED]> wrote:
Yes, but again, is this test with the single fprintf call?  That's the
real fix for this problem, not the lock.

-Rasmus

Richard Quadling 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
>>
>>
>
>





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

Reply via email to