!81 sync: 同步sp3分支修改&修复版本降级bug

From: @weidongkl 
Reviewed-by: @snoweay 
Signed-off-by: @snoweay
This commit is contained in:
openeuler-ci-bot 2024-05-29 02:00:00 +00:00 committed by Gitee
commit 115496db58
No known key found for this signature in database
GPG Key ID: 173E9B9CA92EEF8F
2 changed files with 95 additions and 1 deletions

View File

@ -1,6 +1,6 @@
Name: criu
Version: 3.16.1
Release: 8
Release: 9
Provides: crtools = %{version}-%{release}
Obsoletes: crtools <= 1.0-2
Summary: A tool of Checkpoint/Restore in User-space
@ -17,6 +17,7 @@ Obsoletes: %{name}-libs < %{version}-%{release}
Patch1: 0001-criu-dump-and-restore-cpu-affinity-of-each-thread.patch
Patch2: 0002-mm-add-pin-memory-method-for-criu.patch
Patch3: revert-fix-BUG-at-criu-pstree.c-452.patch
Patch1000: 1000-backport-page-pipe-fix-limiting-a-pipe-size.patch
Patch1001: 1001-backport-tty-fix-the-null-pointer-of-get_tty_driver.patch
@ -104,6 +105,9 @@ chmod 0755 %{buildroot}/run/%{name}/
%doc %{_mandir}/man1/{compel.1*,crit.1*,criu-ns.1*}
%changelog
* Mon Jun 19 2023 hewenliang <314264452@qq.com> - 3.16.1-9
- revert: fix BUG at criu/pstree.c:452
* Mon Jun 19 2023 hewenliang <314264452@qq.com> - 3.16.1-8
- revert "rseq c/r support"

View File

@ -0,0 +1,90 @@
Subject: [PATCH 1/1] revert: fix BUG at criu/pstree.c:452
Not all the process which is dumped by criu is session leader, the
enhancing verification is annoying, because it causes many problems in
some testcases. Therefore, revert this bugfix.
If the bugfix is resumed, using `setsid` to start process is necessary,
and using `stdbuf -oL` to redirect standard output at the same time.
This bug detail sees #1332.
Revert "pstree: don't change sid/gid-s if current sid/gid is the same"
This reverts commit 90e03b1a1142ca40fb78de9eb04944ab51d06eeb.
Revert "pstree: check for pid collision before switching to new sid/gid"
This reverts commit 7e6a1a7011b404fbf0108b062bda118e9a696b60.
---
criu/pstree.c | 37 ++++++++++---------------------------
1 file changed, 10 insertions(+), 27 deletions(-)
diff --git a/criu/pstree.c b/criu/pstree.c
index d5080e515..bf09c761c 100644
--- a/criu/pstree.c
+++ b/criu/pstree.c
@@ -340,7 +340,6 @@ static int prepare_pstree_for_shell_job(pid_t pid)
pid_t current_gid = getpgid(pid);
struct pstree_item *pi;
- struct pid *tmp;
pid_t old_sid;
pid_t old_gid;
@@ -348,7 +347,6 @@ static int prepare_pstree_for_shell_job(pid_t pid)
if (!opts.shell_job)
return 0;
- /* root_item is a session leader */
if (root_item->sid == vpid(root_item))
return 0;
@@ -370,37 +368,22 @@ static int prepare_pstree_for_shell_job(pid_t pid)
*/
old_sid = root_item->sid;
- if (old_sid != current_sid) {
- pr_info("Migrating process tree (SID %d->%d)\n", old_sid, current_sid);
- tmp = pstree_pid_by_virt(current_sid);
- if (tmp) {
- pr_err("Current sid %d intersects with pid (%d) in images\n", current_sid, tmp->state);
- return -1;
- }
+ pr_info("Migrating process tree (SID %d->%d)\n",
+ old_sid, current_sid);
- for_each_pstree_item(pi) {
- if (pi->sid == old_sid)
- pi->sid = current_sid;
- }
-
- if (lookup_create_item(current_sid) == NULL)
- return -1;
+ for_each_pstree_item(pi) {
+ if (pi->sid == old_sid)
+ pi->sid = current_sid;
}
- /* root_item is a group leader */
- if (root_item->pgid == vpid(root_item))
- return 0;
-
old_gid = root_item->pgid;
- if (old_gid != current_gid) {
- pr_info("Migrating process tree (GID %d->%d)\n", old_gid, current_gid);
-
- tmp = pstree_pid_by_virt(current_gid);
- if (tmp) {
- pr_err("Current gid %d intersects with pid (%d) in images\n", current_gid, tmp->state);
+ if (old_gid != vpid(root_item)) {
+ if (lookup_create_item(current_sid) == NULL)
return -1;
- }
+
+ pr_info("Migrating process tree (GID %d->%d)\n",
+ old_gid, current_gid);
for_each_pstree_item(pi) {
if (pi->pgid == old_gid)
--
2.35.1