linuxdcpp-team team mailing list archive
-
linuxdcpp-team team
-
Mailing list archive
-
Message #09278
[Bug 2111115] [NEW] Hashing cannot be paushed instantly or sometimes at all
Public bug reported:
This is a long time issue stil present on DC++ 0.882. As the title says pausing the hasher loop from the GUI is often not instantaneous, especially when hashing many small files.
The cause is a buggy pauser code that signals a counting semaphore for each file added to the hashing queue but later it fails to account for this behavior.
Side effects above the lack of instant pause:
- HashPauser objects utilize the same code and they're used for holding disk activity while a shared directories tree is being (re)built (share refresh). Obviously due to the issue HashPauser often cannot fulfill its purpose.
- The current code allows manual /rebuild's to start when hashing is paused. Same issue as above, this is not wanted during share indices rebuilds.
- If you start to hash a few larger files and you pause hashing, then exit DC++ a deadlock can happen, more ofthen than not, which prevents the hasher thread from shutting down.
** Affects: dcplusplus
Importance: Medium
Assignee: eMTee (realprogger)
Status: In Progress
** Changed in: dcplusplus
Status: New => In Progress
** Changed in: dcplusplus
Importance: Undecided => Medium
** Changed in: dcplusplus
Assignee: (unassigned) => eMTee (realprogger)
--
You received this bug notification because you are a member of
Dcplusplus-team, which is subscribed to DC++.
https://bugs.launchpad.net/bugs/2111115
Title:
Hashing cannot be paushed instantly or sometimes at all
Status in DC++:
In Progress
Bug description:
This is a long time issue stil present on DC++ 0.882. As the title says pausing the hasher loop from the GUI is often not instantaneous, especially when hashing many small files.
The cause is a buggy pauser code that signals a counting semaphore for each file added to the hashing queue but later it fails to account for this behavior.
Side effects above the lack of instant pause:
- HashPauser objects utilize the same code and they're used for holding disk activity while a shared directories tree is being (re)built (share refresh). Obviously due to the issue HashPauser often cannot fulfill its purpose.
- The current code allows manual /rebuild's to start when hashing is paused. Same issue as above, this is not wanted during share indices rebuilds.
- If you start to hash a few larger files and you pause hashing, then exit DC++ a deadlock can happen, more ofthen than not, which prevents the hasher thread from shutting down.
To manage notifications about this bug go to:
https://bugs.launchpad.net/dcplusplus/+bug/2111115/+subscriptions