Neil, thanks so much for checking this out!

That is interesting.  I also tried another variant where I'd launch "emacs 
--daemon" before running Tup, then issue "emacsclient" from the build 
instead.  In those cases I would see an outright message like "Operation 
not permitted: cannot change directory"---even if I didn't do anything from 
the client.  Sounds like that was essentially the same issue.

>From my point of view, these are deterministic, file-based input-output 
operations occurring within the build directory, so if Tup has to disallow 
them I'd understand it as an implementation constraint.  But I am quite out 
of my depth with respect to the details of Linux's process model, and I 
trust that the rule may be necessary.

As I said, I love Tup---so much that I'm migrating a major project over to 
Linux after many years.  That in itself is a good outcome.  And I'm willing 
to be a guinea pig who disables this restriction to see how things go.  I 
installed Tup from source so could comment out the relevant check.

Thanks again,
Gavin

On Saturday, June 20, 2015 at 10:06:49 AM UTC-5, Neil Shepperd wrote:
>
> Running emacs under strace, I got this interesting snippet: 
>
> [pid  7700] vfork(Process 7702 attached 
>  <unfinished ...> 
> [pid  7702] rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0 
> [pid  7702] setsid()                    = 7702 
> [pid  7702] rt_sigaction(SIGPIPE, {SIG_DFL, [PIPE], 
> SA_RESTORER|SA_RESTART, 0x7f90738215b0}, {SIG_DFL, [], 0}, 8) = 0 
> [pid  7702] rt_sigaction(SIGPROF, {SIG_DFL, [PROF], 
> SA_RESTORER|SA_RESTART, 0x7f90738215b0}, {SIG_IGN, [PROF], 
> SA_RESTORER|SA_RESTART, 0x7f90738215b0}, 8) = 0 
> [pid  7702] getpid()                    = 7702 
> [pid  7702] chdir("/home/neil/ts/.tup/mnt/@tupjob-22/home/neil/ts") = -1 
> EPERM (Operation not permitted) 
> [pid  7702] exit_group(125)             = ? 
> [pid  7700] <... vfork resumed> )       = 7702 
>
> It looks like after emacs forks, the child process makes itself leader of 
> a new process group with setsid(), which trips tup's security restrictions 
> on the fuse mountdir 
>
>     tup fuse warning: Process pid=7702, uid=1000, gid=1000 is trying to 
> access the tup server's fuse filesystem. 
>
> so access is denied for the child to chdir into the fuse dir. 
>
> I suppose this is a bug, if we really want to allow child processes to put 
> themselves into new process groups? 
>
> Regards 
> Neil 
>
> On 19/06/15 00:57, Gavin Cannizzaro wrote: 
> > Thanks for the reply, Bernhard. 
> > 
> > My understanding is that Tup will not export anything by default except 
> PATH.  Even so, I've tried the same tests with explicit command paths (like 
> "/usr/bin/touch") with the same results.  I wouldn't expect that coreutils 
> like touch require any other environment variables, but it is at least 
> something to investigate further. 
> > 
> > I also forgot to mention that emacs itself *can* write to files.  So 
> org-export, which I guess does its file access directly (from the C 
> functions) does work.  It's only when launching a sub-process (as is needed 
> for org babel) that I run into this problem. 
> > 
> > Thanks again, 
> > Gavin 
> > 
> > 
> > On Thursday, June 18, 2015 at 9:29:30 AM UTC-5, [email protected] wrote: 
> > 
> >     Please keep in mind that tup will pass a rather clean environment to 
> its subprocesses. Maybe emacs misses something in its environment. You can 
> force tup to pass select variables with the "export" directive. 
> > 
> >     Kind regards, Bernhard. 
> > 
> > 
> >     On 18 June 2015 15:52:38 CEST, Gavin Cannizzaro <[email protected] 
> <javascript:>> wrote: 
> > 
> >         Further research shows that *all* commands (that I could think 
> to try) return status 125 when called by emacs call-process via Tup.  I'm 
> assuming this has something to do with the fuse mount. 
> > 
> >         Does anyone know what status 125 means?  I haven't determined 
> whether it's coming from the processes themselves, or from emacs, or fuse. 
> > 
> >         Also, is there any way that I can debug this while the mount is 
> active?  By the time Tup is finished, the paths reported by commands no 
> longer exist. 
> > 
> >         Thanks, 
> >         Gavin 
> > 
> > -- 
> > -- 
> > tup-users mailing list 
> > email: [email protected] <javascript:> 
> > unsubscribe: [email protected] <javascript:> 
> > options: http://groups.google.com/group/tup-users?hl=en 
> > --- 
> > You received this message because you are subscribed to the Google 
> Groups "tup-users" group. 
> > To unsubscribe from this group and stop receiving emails from it, send 
> an email to [email protected] <javascript:> <mailto:
> [email protected] <javascript:>>. 
> > For more options, visit https://groups.google.com/d/optout. 
>

-- 
-- 
tup-users mailing list
email: [email protected]
unsubscribe: [email protected]
options: http://groups.google.com/group/tup-users?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
"tup-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to