Changeset View
Changeset View
Standalone View
Standalone View
files/segmentation-fault-on-podcasts-downloads.patch
- This file was added.
| From e11b656bda59ca31b4f9ab4c5a14696813b0f6f4 Mon Sep 17 00:00:00 2001 | |||||
| From: Tilman Keskinoz <arved@FreeBSD.org> | |||||
| Date: Thu, 12 Mar 2015 11:03:50 +0100 | |||||
| Subject: [PATCH 1/3] Detach thread, to avoid thread being destructed when it | |||||
| is going out of scope | |||||
| --- | |||||
| src/pb_controller.cpp | 1 + | |||||
| 1 file changed, 1 insertion(+) | |||||
| diff --git a/src/pb_controller.cpp b/src/pb_controller.cpp | |||||
| index 09b5e897..da8ffcb1 100644 | |||||
| --- a/src/pb_controller.cpp | |||||
| +++ b/src/pb_controller.cpp | |||||
| @@ -287,6 +287,7 @@ void pb_controller::start_downloads() { | |||||
| if (it->status() == DL_QUEUED) { | |||||
| std::thread t {poddlthread(&(*it), cfg)}; | |||||
| --dl2start; | |||||
| + t.detach(); | |||||
| } | |||||
| } | |||||
| } | |||||
| From f79e5527ba5f54677540637f5b8d287215cfa051 Mon Sep 17 00:00:00 2001 | |||||
| From: Tilman Keskinoz <arved@FreeBSD.org> | |||||
| Date: Thu, 12 Mar 2015 11:04:49 +0100 | |||||
| Subject: [PATCH 2/3] Fix segfault | |||||
| I think somewhere the poddlthread is copied and the memory messed up. | |||||
| Make it a shared_ptr to fix segfault. | |||||
| Why is this a pointer anyway? | |||||
| --- | |||||
| include/poddlthread.h | 3 ++- | |||||
| src/poddlthread.cpp | 1 - | |||||
| 2 files changed, 2 insertions(+), 2 deletions(-) | |||||
| diff --git a/include/poddlthread.h b/include/poddlthread.h | |||||
| index a10b9e73..cf0f1daa 100644 | |||||
| --- a/include/poddlthread.h | |||||
| +++ b/include/poddlthread.h | |||||
| @@ -7,6 +7,7 @@ | |||||
| #include <sys/time.h> | |||||
| #include <time.h> | |||||
| +#include <memory> | |||||
| #include <configcontainer.h> | |||||
| @@ -24,7 +25,7 @@ class poddlthread { | |||||
| private: | |||||
| void mkdir_p(const char * file); | |||||
| download * dl; | |||||
| - std::ofstream *f; | |||||
| + std::shared_ptr<std::ofstream> f; | |||||
| timeval tv1; | |||||
| timeval tv2; | |||||
| size_t bytecount; | |||||
| diff --git a/src/poddlthread.cpp b/src/poddlthread.cpp | |||||
| index 583481eb..3a1b390f 100644 | |||||
| --- a/src/poddlthread.cpp | |||||
| +++ b/src/poddlthread.cpp | |||||
| @@ -22,7 +22,6 @@ poddlthread::poddlthread(download * dl_, newsbeuter::configcontainer * c) : dl(d | |||||
| } | |||||
| poddlthread::~poddlthread() { | |||||
| - delete f; | |||||
| } | |||||
| void poddlthread::operator()() { | |||||
| From 49dbf84d9500860c48c1d3137cf0d7ab89588726 Mon Sep 17 00:00:00 2001 | |||||
| From: Tilman Keskinoz <arved@FreeBSD.org> | |||||
| Date: Thu, 12 Mar 2015 11:30:24 +0100 | |||||
| Subject: [PATCH 3/3] Another threa.detach() missing | |||||
| --- | |||||
| src/pb_view.cpp | 1 + | |||||
| 1 file changed, 1 insertion(+) | |||||
| diff --git a/src/pb_view.cpp b/src/pb_view.cpp | |||||
| index fb61c726..f3cb4788 100644 | |||||
| --- a/src/pb_view.cpp | |||||
| +++ b/src/pb_view.cpp | |||||
| @@ -111,6 +111,7 @@ void pb_view::run(bool auto_download) { | |||||
| if (idx != -1) { | |||||
| if (ctrl->downloads()[idx].status() != DL_DOWNLOADING) { | |||||
| std::thread t {poddlthread(&ctrl->downloads()[idx], ctrl->get_cfgcont())}; | |||||
| + t.detach(); | |||||
| } | |||||
| } | |||||
| } | |||||
Copyright © 2015-2021 Solus Project. The Solus logo is Copyright © 2016-2021 Solus Project. All Rights Reserved.