[Twisted-Python] _twistd_unix.py / daemonize() / OSX / USING_FORK_WITHOUT_EXEC_IS_NOT_SUPPORTED_BY_FILE_MANAGER
Phil Mayers
p.mayers at imperial.ac.uk
Wed Oct 13 09:52:39 MDT 2010
On 13/10/10 16:40, Phil Mayers wrote:
> On 13/10/10 15:55, Erik van Blokland wrote:
>>
>> The code calls fork(), but no exec():
>
> fork() with no exec() is legal Unix.
>
> Various googling led me to:
>
> http://trac.adium.im/ticket/13976#comment:28
>
> """The problem is that OSX since version 10.6 (Snow Leopard) does NOT
> allow processes launched via Dock (not via exec) to use fork() function,
> which is one used by Gadu-Gadu resolver. And stuff that crashes is NOT
> main Adium process, but resolver GG process, that is killed by OS
> itself. """
>
> If that's the case, I don't think twistd will work in that situation.
> twistd expects to be able to fork() (unless you give the "-n" argument
> to keep it in the foreground)
Other info indicates this is Apple trying to be clever and "protect"
applications from some signal handling issues surrounding fork() with
libraries which aren't safe in that situation; presumably these are
MacOS-specific libraries?
If this really is true, then MacOS X is no longer posix-compliant in
those circumstances, and Twisted is going to need some work :o(
Can you share more details about the application; the context in which
it is started, and which system libraries it's likely to load?
More information about the Twisted-Python
mailing list