[master 2/2] Use exec instead of system to run metacity

Vratislav Podzimek vpodzime at redhat.com
Thu Jul 31 13:09:51 UTC 2014


On Thu, 2014-07-31 at 08:48 -0400, David Shea wrote:
> On 07/31/2014 05:11 AM, Vratislav Podzimek wrote:
> > On Wed, 2014-07-30 at 17:00 -0400, David Shea wrote:
> >> This way we don't up with a second process named "anaconda" that's
> >> actually a middleman for the window manager.
> >> ---
> >>   anaconda | 11 +++++------
> >>   1 file changed, 5 insertions(+), 6 deletions(-)
> >>
> >> diff --git a/anaconda b/anaconda
> >> index 4d4676e..6ff4a89 100755
> >> --- a/anaconda
> >> +++ b/anaconda
> >> @@ -269,14 +269,13 @@ def startMetacityWM():
> >>           # after this point the method should never return (or throw an exception
> >>           # outside)
> >>           try:
> >> -            returncode = iutil.execWithRedirect('metacity', ["--display", ":1", "--sm-disable"])
> >> -        except BaseException as e:
> >> +            os.execlp("metacity", "metacity", "--display", ":1", "--sm-disable")
> >> +        except BaseException:
> > I know you didn't come up with with it, but do we really need to catch
> > all BaseException-inherited exceptions here? I mean, it shouldn't throw
> > an expception outside, but if it raises anything else from OSError, it's
> > a bug we should fix, right? I'm probably thinking too much in the
> > context of the recent "at the edge with RAM" context, but I've seen
> > various failures we hide in case something like ENOMEM starts happening.
> >
> 
> Yeah, raising anything other than OSError would be weird and something 
> to fix, but I think the idea behind catching BaseException is so that 
> odd errors are logged somewhere instead of just printed to the screen 
> and forgotten. Of course this means I shouldn't have removed the part 
> where we actually log the exception, but I don't see catching it in this 
> case as harmful. If we catch it, we log an error and immediately exit. 
> If we don't catch it, python prints a backtrace to the console and 
> exits. If we run this code after sys.excepthook has already been 
> installed and don't catch BaseException, then something bad will 
> probably happen.
So shouldn't we at least restore the original excepthook in the child
process?

-- 
Vratislav Podzimek

Anaconda Rider | RHCE | Red Hat, Inc. | Brno - Czech Republic




More information about the anaconda-patches mailing list