Opened 9 years ago

Closed 9 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 Changed 9 years ago by dmik

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 9 years ago by dmik

  • Milestone set to Qt GA

comment:3 Changed 9 years ago by diver

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

comment:4 Changed 9 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(!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 Changed 9 years ago by dmik

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 9 years ago by dmik

  • Resolution set to fixed
  • Status changed from new to closed
Note: See TracTickets for help on using tickets.