Opened 15 years ago

Closed 15 years ago

#59 closed defect (fixed)

"make clean" will crash CMD.EXE

Reported by: rudi Owned by:
Priority: major Milestone: Qt GA
Component: General Version: 4.5.1 Beta 1
Severity: Keywords:
Cc:

Description

During the processing of "make clean" CMD.EXE will crash leaving behind a 100%-CPU-eating zombie process. The reason for this is, that CMD.EXE can't handle "del" commands with huge file lists as they are emitted by the makefile.

I don't know, if it is possible to instruct GNU make not split these into multiple commands. If not, we should not use "del" in our qmake.conf. Instead we should use "rm" and either force the user to install GNU file utils or provide a script/executable for that.

Change History (6)

comment:1 by Dmitry A. Kuminov, 15 years ago

I believe I did a patch that would cause multiple del lines to be generated instead of just one. I will check it again.

comment:2 by Dmitry A. Kuminov, 15 years ago

Milestone: Qt GA

comment:3 by Silvan Scherrer, 15 years ago

a good example to see the crash is in smplayer.
make distclean will show it

comment:4 by rudi, 15 years ago

Arrgh, I just had to reboot my machine again for this very reason.

Please add the OS/2 specific command line length to:

qmake\generators\makefile.cpp line 1815:

...
const int commandlineLimit = 2047; NT limit, expanded
...

It might also be useful to add the output redirection for the
"del" command a few lines below:

if(!cleans.isEmpty())
{
    if(Option::target_mode == Option::TARG_OS2_MODE )
        t << valGlue(cleans, "\n\t" + del_statement, " >nul 2>&1\n\t" + del_statement, " >nul 2>&1");
    else
        t << valGlue(cleans, "\n\t" + del_statement, "\n\t" + del_statement, "");
}

comment:5 by Dmitry A. Kuminov, 15 years ago

Ok, I found the problem. I only fixed these things in winmakefile.cpp but not in makefile.cpp. Thank you for the hints, rudi! The fixes are in (r189), please check.

comment:6 by Dmitry A. Kuminov, 15 years ago

Resolution: fixed
Status: newclosed
Note: See TracTickets for help on using tickets.