[Haskell-cafe] createProcess running non-existent programs

Alexander Kjeldaas alexander.kjeldaas at gmail.com
Mon Aug 13 13:26:28 CEST 2012


This isn't that hard - a pipe shouldn't be needed anymore.  Just require a
post-2003 glibc.

fexecve is a system call in most BSDs.  It is also implemented in glibc
using a /proc hack.

http://www.kernel.org/doc/man-pages/online/pages/man3/fexecve.3.html

Apparently, there are proposals/RFCs to get a system called execveat into
the linux kernel which makes this work properly without /proc.

http://www.gossamer-threads.com/lists/linux/kernel/1574831

Alexander

On 13 August 2012 11:23, David Feuer <david.feuer at gmail.com> wrote:

> In Unix, at least, "check, then act" is generally considered unwise:
> 1. Something can go wrong between checking and acting.
> 2. You might not be checking the right thing(s).  In this case, the fact
> that the file exists is not useful if you don't have permission to execute
> it. You may not be able to determine whether you have the appropriate
> permissions without fairly deep manipulation of ACLs.
> 3. Even if the OS has the info at hand, making the system call(s)
> necessary to get it is not free. Various non-free things happen every time
> control passes between user-space and kernel-space.
> On Aug 13, 2012 4:17 AM, "Andrew Cowie" <andrew at operationaldynamics.com>
> wrote:
>
>> On Sun, 2012-08-12 at 23:18 -0700, Evan Laforge wrote:
>> > Yes, I ran into the same thing a while back.  The problem is that the
>> > subprocess has already been forked off before it runs exec() and finds
>> > out the file doesn't exist.
>>
>> Given how astonishingly common it is to pass an invalid executable name
>> and/or path, wouldn't it be worth doing a quick probe to see if the file
>> exists before createProcess actually forks?
>>
>> [It's not like the effort the OS is going to do for the stat is going to
>> be thrown away; whether that call pulls it up off of disk or the one
>> after the fork that exec will do doesn't matter]
>>
>> AfC
>> Sydney
>>
>>
>> _______________________________________________
>> Haskell-Cafe mailing list
>> Haskell-Cafe at haskell.org
>> http://www.haskell.org/mailman/listinfo/haskell-cafe
>>
>>
> _______________________________________________
> Haskell-Cafe mailing list
> Haskell-Cafe at haskell.org
> http://www.haskell.org/mailman/listinfo/haskell-cafe
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.haskell.org/pipermail/haskell-cafe/attachments/20120813/9c3370b9/attachment.htm>


More information about the Haskell-Cafe mailing list