Summary: | apt-shell crashes if one answers "no" to commit | ||
---|---|---|---|
Product: | Sisyphus | Reporter: | Ivan Zakharyaschev <imz> |
Component: | apt | Assignee: | placeholder <placeholder> |
Status: | CLOSED FIXED | QA Contact: | qa-sisyphus |
Severity: | normal | ||
Priority: | P2 | CC: | boyarsh, glebfm, imz, lav, ldv, placeholder, shakirov |
Version: | unstable | ||
Hardware: | all | ||
OS: | Linux |
Description
Ivan Zakharyaschev
2008-01-05 08:20:11 MSK
Воспроизводится: # rpm -q apt rpm apt-0.5.15lorg2-alt33 rpm-4.0.4-alt100.1 Reproduced with: apt-0.5.15lorg2-alt38 rpm-4.0.4-alt100.24 Это ужасно неприятная бага, мешающая методом подбора подобрать хорошее решение. Там специально написан такой код, который вызывает завершение просто при ответе "нет". Предлагаю внести следующее исправление (на себе проверил): diff --git a/apt/cmdline/apt-shell.cc b/apt/cmdline/apt-shell.cc index 1dcfc06..c26885f 100644 --- a/apt/cmdline/apt-shell.cc +++ b/apt/cmdline/apt-shell.cc @@ -1101,8 +1101,7 @@ bool InstallPackages(CacheFile &Cache,bool ShwKept,bool Ask = true, c2out << flush; if (AnalPrompt(Prompt) == false) { - c2out << _("Abort.") << endl; - exit(1); + return true; } } else @@ -1120,8 +1119,7 @@ bool InstallPackages(CacheFile &Cache,bool ShwKept,bool Ask = true, if (YnPrompt() == false) { - c2out << _("Abort.") << endl; - exit(1); + return true; } } Может быть, любое другое продолжение работы apt-shell после отказа от коммита переводит apt-shell в неконсистентное состояние? (В ответ на комментарий №4) > Может быть, любое другое продолжение работы apt-shell после отказа от коммита > переводит apt-shell в неконсистентное состояние? Из функции InstallPackage много раз выходят с помощью return. К тому же на этом этапе ничего ещё дельного не произошло. Так что я считаю, что никакого неконсистентного состояния там не возникает. На себе проверил. apt-0.5.15lorg2-alt41 -> sisyphus: * Thu May 24 2012 Dmitry V. Levin <ldv@altlinux> 0.5.15lorg2-alt41 - apt-get, apt-shell: when a package could not be found, print the unmangled package request string (by Igor Vlasenko; closes: #27364). - apt-shell: do not abort when commit is cancelled (closes: #13877); Unlike one may suppose, this change will not cause the cache of accumulated changes to be cleared by cancelled "commit" operation, but this is exactly what Vitaly Lipatov has proposed in his comments to #13877. Спасибо! Спасибо! |