pensavo di aver risolto, e invece neanche per niente.
codice:
QString ExecCommand::execCmd(QString url)
{
    QByteArray result = p.readAll();
    //p.start("youtube-dl", QStringList() << "-x" << "--audio-format" << " mp3" << url);
    p.start("youtube-dl", QStringList() << "-x" << url);
    p.write(result);
    p.closeWriteChannel();
    if (!p.waitForFinished()) {
        qDebug("%s", "NO");
    }
    QString strOut(p.readAll());
    return strOut;
}
l'operazione che viene eseguita è abbastanza lunga, e succede che parte e poi a un certo si ferma.
il programma in verità rimane attivo, però il comando si interrompe.
e non ci sono errori in output.