DragonFly BSD
DragonFly users List (threaded) for 2006-10
[Date Prev][Date Next]  [Thread Prev][Thread Next]  [Date Index][Thread Index]

Re: bmake not killing childrens

From: Matthew Dillon <dillon@xxxxxxxxxxxxxxxxxxxx>
Date: Wed, 4 Oct 2006 09:36:32 -0700 (PDT)

:some of you may have noticed that sometimes when you type Ctrl + C
:to stop bmake it doesn't stop. I find that behaviour annoying so
:i created this patch[1] to solve it.
:This patch disables make compatibility mode, so some things WILL
:break. bmake unit tests is an example of this. So to install the new
:bmake you'll need to cp /usr/pkgsrc/devel/bmake/work/DragonFly/bmake
:to /usr/pkg/bin/bmake
:I've tried it compiling mule-ucs package and seems that bmake with
:the patch did his job fine, but it may break things, so use with
:Also it would be great if someone who knows bmake internals could
:find a better and definitive solution.
:[1]: http://bsdes.net/~victor/dfbsd/bmake/main.c.patch

    Our normal 'make' sometimes fails to kill children too.   Now it is
    certainly possible for a program to ignore SIGINT, but the real
    problem here is probably due to a bug in DragonFly rather than a bug
    in make or bmake.

    When you send a ^C, the signal gets sent to the entire process group.

    But there is a race in DragonFly's fork() code (fork1() in the kernel)
    where the newly forked child process does not receive the signal because
    it is still in the middle of being set-up.  It is either not yet in the
    process group or the process is flagged as not being completely set-up
    yet and the signal is ignored.

    I think if this bug is addressed, most (or all) of these issues will
    go away.

					Matthew Dillon 

[Date Prev][Date Next]  [Thread Prev][Thread Next]  [Date Index][Thread Index]