← Back to team overview

linuxdcpp-team team mailing list archive

[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