OK, I've redone the semaphore stuff myself with a new POPFile module called POPFile::Mutex that implements a flock()-based mutex using the file system. This should give us a cross-thread and cross-process mutex that will guard the Text::Kakasi module (and perhaps IO::Socket::SSL in future).
Thanks. But POPFile 0.22.2 RC2 sometimes crashes with error -1073741819 (which is captured by Message Capture Utility) when I use forking.
Here is the Message Capture log:
------------------------------------------------------------
POPFile Message Capture Utility v0.0.57
------------------------------------------------------------
POPFILE_ROOT = c:\progra~1\popfile
POPFILE_USER = C:\DOCUME~1\m001062\APPLIC~1\POPFile2
Using 'popfileif.exe' to run POPFile
------------------------------------------------------------
(report started 03-Dec-2004 @ 10:26:03)
------------------------------------------------------------
It's really weird to read this message because I awoke in the middle of the night and thought to myself... don't unlink the file in the case that a caller couldn't get the lock.
That's the problem you are seeing; I will commit a fix and better tests later today.
Without that does my Mutex fix the problem you were seeing?
John.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
"OK, I've redone the semaphore stuff myself with a new POPFile module called POPFile::Mutex that implements a flock()-based mutex using the file system. This should give us a cross-thread and cross-process mutex"
Maybe cross-thread and cross-process, but how about cross-platform?
Last time I worked with flock() on a Win9x system, Perl woudn't even compile the script. It's been a while though and it works on w2k (and should also work on xp). Does it work on win95 and family?
Manni
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Not to be obnoxious about it but one of the things I like about these forums is that the discussion of issues is free of language like you let slip into this thread. There's no way that I know about to go back and edit what you have already posted. I do understand your level of frustration.
--
Jim
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Yes, your Mutex almost works, but POPFile sometimes crashes.
With my change (to not unlink), I have never experienced crashes.
I've made a test code that try fork() 3 times and use Kakasi's 'Wakachi-gaki' 1000 times in every child process. The test code sometimes crashes with your original Mutex, but with my change it has never crashed.
I'll test RC2 on Windows 2k (and if I can, on Win 98) this morning (it is 4:30 am in Japanese Standard Time now).
Naoki
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
OK, I've redone the semaphore stuff myself with a new POPFile module called POPFile::Mutex that implements a flock()-based mutex using the file system. This should give us a cross-thread and cross-process mutex that will guard the Text::Kakasi module (and perhaps IO::Socket::SSL in future).
That's all I changed.
http://getpopfile.org/popfile-0.22.2RC2.zip
http://getpopfile.org/popfile-0.22.2RC2-windows.zip
John.
I am crossing threads here...but i need to clarify.
Sam said ....
How does including the async fix in 0.22.2, and a full optimization (with or without async enabled by default) for 0.23.0 sound?
John said ....
If you want the async deletes thing turned on then just leave that number alone.
So for v0.22.2 the default (async on) setting for:
Bayes_sqlite_tweaks is:
Bayes_sqlite_tweaks = 4294967295
correct?
rd
Regards,
Sam
Correct.
John.
John,
Thanks. But POPFile 0.22.2 RC2 sometimes crashes with error -1073741819 (which is captured by Message Capture Utility) when I use forking.
Here is the Message Capture log:
------------------------------------------------------------
POPFile Message Capture Utility v0.0.57
------------------------------------------------------------
POPFILE_ROOT = c:\progra~1\popfile
POPFILE_USER = C:\DOCUME~1\m001062\APPLIC~1\POPFile2
Using 'popfileif.exe' to run POPFile
------------------------------------------------------------
(report started 03-Dec-2004 @ 10:26:03)
------------------------------------------------------------
POPFile Engine loading
Loading...
{core: windows}
{core: config history logger mq}
{classifier: bayes wordmangle}
{interface: html}
{proxy: pop3}
{services:}
POPFile Engine v0.22.2 starting
Initializing...
{core: config history logger mq windows}
{classifier: bayes wordmangle}
{interface: html}
{proxy: pop3}
{services:}
Starting...
{core: config history logger mq windows}
{classifier: bayes wordmangle}
{interface: html}
{proxy: pop3}
{services:}
POPFile Engine v0.22.2 running
------------------------------------------------------------
Status code: -1073741819
------------------------------------------------------------
(report finished 03-Dec-2004 @ 10:26:40)
------------------------------------------------------------
The error code -1073741819 is same as I have experienced on v0.22.1.
The error can be solved by commenting out the line 106 of POPFile/Mutex.pm (unlink $self->{name__};).
Naoki
It's really weird to read this message because I awoke in the middle of the night and thought to myself... don't unlink the file in the case that a caller couldn't get the lock.
That's the problem you are seeing; I will commit a fix and better tests later today.
Without that does my Mutex fix the problem you were seeing?
John.
"OK, I've redone the semaphore stuff myself with a new POPFile module called POPFile::Mutex that implements a flock()-based mutex using the file system. This should give us a cross-thread and cross-process mutex"
Maybe cross-thread and cross-process, but how about cross-platform?
Last time I worked with flock() on a Win9x system, Perl woudn't even compile the script. It's been a while though and it works on w2k (and should also work on xp). Does it work on win95 and family?
Manni
>> Does it work on win95 and family? <<
Unfortunately my mail boxes have not had much traffic since I installed 0.22.2RC2 so it is too early to say for sure.
On my Win98SE system 0.22.2RC2 has not crashed (yet) but although I have forking enabled it is behaving as if forking is not being used.
Brian
Ah, but it loaded. That's important because if flock() were missing the use POPFile::Mutex; should have errored out on start-up.
John.
Naoki,
What platform are you on?
Manni,
It does appear from the documentation that flock() is not available on Windows 9x systems. Fuck. I am so sick of Windows crap like that.
Anyone,
Has anyone tried v0.22.2 on a Windows 9x system?
John.
I guess you would have to check with an actve Kakasi module on W9x to see the effect. Right?
Manni
John,
I'm using Windows XP SP2.
The Mutex works partially, but POPFile crashes sometimes.
I have not tried to use on Windows 9x but the Mutex code seems to have some problems.
Naoki
John,
Not to be obnoxious about it but one of the things I like about these forums is that the discussion of issues is free of language like you let slip into this thread. There's no way that I know about to go back and edit what you have already posted. I do understand your level of frustration.
--
Jim
You are correct, I shouldn't be the one setting a bad example.
John.
John,
Yes, your Mutex almost works, but POPFile sometimes crashes.
With my change (to not unlink), I have never experienced crashes.
I've made a test code that try fork() 3 times and use Kakasi's 'Wakachi-gaki' 1000 times in every child process. The test code sometimes crashes with your original Mutex, but with my change it has never crashed.
I'll test RC2 on Windows 2k (and if I can, on Win 98) this morning (it is 4:30 am in Japanese Standard Time now).
Naoki
Cool, either you are a true geek to be up at 0430 (as I once was) or you are a Dad :-)
John.
>Cool, either you are a true geek to be up at 0430 (as I once was) or you are a Dad :-)
----
you took the words right out of my mouth! (or he needs to catch a train to Tokyo).
rd
Yeah, I might be a POPFile geek :-)
I've done the test on Win2k and in Win2k, POPFile also crashes sometimes.
Commenting out the line 106 of POPFile/Mutex.pm will solve the problem.
I've made the test code and posted here:
http://amatubu.skr.jp/?POPFile/TestCodeForForkingProblem
The code will check the Mutex works correctly.
Naoki