[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