* [PATCH] ds: Reset at END
@ 2023-09-14 12:50 Eric Wong
2023-09-14 13:02 ` [PATCH 2/1] test_common: call DS->Reset instead of cleanup_task Eric Wong
0 siblings, 1 reply; 3+ messages in thread
From: Eric Wong @ 2023-09-14 12:50 UTC (permalink / raw)
To: meta
This seems to avoid some DBI teardown segfaults on OpenBSD 7.3;
but there may be other places where something similar is necessary.
---
lib/PublicInbox/DS.pm | 3 +++
1 file changed, 3 insertions(+)
diff --git a/lib/PublicInbox/DS.pm b/lib/PublicInbox/DS.pm
index d47df491..919a4b67 100644
--- a/lib/PublicInbox/DS.pm
+++ b/lib/PublicInbox/DS.pm
@@ -55,6 +55,9 @@ our (
Reset();
+# clobber everything explicitly to avoid DESTROY ordering problems w/ DBI
+END { Reset() }
+
#####################################################################
### C L A S S M E T H O D S
#####################################################################
^ permalink raw reply related [flat|nested] 3+ messages in thread
* [PATCH 2/1] test_common: call DS->Reset instead of cleanup_task
2023-09-14 12:50 [PATCH] ds: Reset at END Eric Wong
@ 2023-09-14 13:02 ` Eric Wong
2023-09-14 20:52 ` [PATCHv2 2/1] test_common: eliminate call to non-existent cleanup_task Eric Wong
0 siblings, 1 reply; 3+ messages in thread
From: Eric Wong @ 2023-09-14 13:02 UTC (permalink / raw)
To: meta
cleanup_task is long gone since all that cleanup work got moved
into DS itself. Forcing a Reset here may solve some cleanup
segfaults I've noticed on OpenBSD 7.3 (and no other OSes).
---
lib/PublicInbox/TestCommon.pm | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/lib/PublicInbox/TestCommon.pm b/lib/PublicInbox/TestCommon.pm
index a8323e4d..a0c3d065 100644
--- a/lib/PublicInbox/TestCommon.pm
+++ b/lib/PublicInbox/TestCommon.pm
@@ -365,7 +365,7 @@ sub run_script ($;$$) {
chdir $d or die "chdir $d: $!";
}
_run_sub($sub, $key, \@argv);
- eval { PublicInbox::Inbox::cleanup_task() };
+ eval { PublicInbox::DS->Reset() };
die "fchdir(restore): $!" if $cwdfh && !chdir($cwdfh);
_undo_redirects($orig_io);
select STDOUT;
^ permalink raw reply related [flat|nested] 3+ messages in thread
* [PATCHv2 2/1] test_common: eliminate call to non-existent cleanup_task
2023-09-14 13:02 ` [PATCH 2/1] test_common: call DS->Reset instead of cleanup_task Eric Wong
@ 2023-09-14 20:52 ` Eric Wong
0 siblings, 0 replies; 3+ messages in thread
From: Eric Wong @ 2023-09-14 20:52 UTC (permalink / raw)
To: meta
cleanup_task is long gone since all that cleanup work got moved
into DS itself. Adding a DS->Reset here breaks t/imapd.t (and
possibly other tests), and is actually unlikely to avoid any
cleanup segfaults on OpenBSD since those are only happening
after `END {}' blocks are called.
---
Original 2/1 patch broke t/imapd.t :x
lib/PublicInbox/TestCommon.pm | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/lib/PublicInbox/TestCommon.pm b/lib/PublicInbox/TestCommon.pm
index a8323e4d..4c819a4f 100644
--- a/lib/PublicInbox/TestCommon.pm
+++ b/lib/PublicInbox/TestCommon.pm
@@ -365,7 +365,8 @@ sub run_script ($;$$) {
chdir $d or die "chdir $d: $!";
}
_run_sub($sub, $key, \@argv);
- eval { PublicInbox::Inbox::cleanup_task() };
+ # n.b. all our uses of PublicInbox::DS should be fine
+ # with this and we can't Reset here.
die "fchdir(restore): $!" if $cwdfh && !chdir($cwdfh);
_undo_redirects($orig_io);
select STDOUT;
^ permalink raw reply related [flat|nested] 3+ messages in thread
end of thread, other threads:[~2023-09-14 20:52 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-09-14 12:50 [PATCH] ds: Reset at END Eric Wong
2023-09-14 13:02 ` [PATCH 2/1] test_common: call DS->Reset instead of cleanup_task Eric Wong
2023-09-14 20:52 ` [PATCHv2 2/1] test_common: eliminate call to non-existent cleanup_task Eric Wong
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).