Opened 11 years ago

Closed 11 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:


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 Changed 11 years ago by Dmitry A. Kuminov

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 Changed 11 years ago by Dmitry A. Kuminov

Milestone: Qt GA

comment:3 Changed 11 years ago by Silvan Scherrer

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

comment:4 Changed 11 years ago by rudi

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(Option::target_mode == Option::TARG_OS2_MODE )
        t << valGlue(cleans, "\n\t" + del_statement, " >nul 2>&1\n\t" + del_statement, " >nul 2>&1");
        t << valGlue(cleans, "\n\t" + del_statement, "\n\t" + del_statement, "");

comment:5 Changed 11 years ago by Dmitry A. Kuminov

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 Changed 11 years ago by Dmitry A. Kuminov

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