Project

General

Profile

Bug #10583

dt_pthread_rwlock_unlock: Assertion `rwlock->cnt >= 0' failed

Added by Roman Lebedev about 4 years ago. Updated almost 4 years ago.

Status:
Fixed
Priority:
Low
Assignee:
Category:
General
Start date:
07/10/2015
Due date:
% Done:

100%

Affected Version:
git development version
System:
all
bitness:
64-bit
hardware architecture:
amd64/x86

Description

Just a tracker so that i do not loose info.
Original message:
darktable: /home/lebedevri/darktable/src/common/dtpthread.h:213: dt_pthread_rwlock_unlock: Assertion `rwlock->cnt >= 0' failed.

0001-DtPthread-rwlock-add-some-debugging-output.patch Magnifier (2.5 KB) Roman Lebedev, 07/11/2015 12:06 AM

0001-DtPthread-rwlock-add-some-debugging-output.patch Magnifier (2.58 KB) Roman Lebedev, 07/11/2015 12:40 AM

0001-DtPthread-rwlock-add-some-debugging-output.patch Magnifier (4.63 KB) Roman Lebedev, 07/11/2015 01:56 PM

0001-DtPthread-rwlock-add-some-debugging-output.patch Magnifier (6.46 KB) Roman Lebedev, 07/11/2015 02:38 PM

0001-DtPthread-rwlock-add-some-debugging-output.patch Magnifier (10.1 KB) Roman Lebedev, 07/11/2015 03:26 PM

gdb.txt Magnifier (171 KB) Roman Lebedev, 07/11/2015 03:28 PM

gdb.txt Magnifier (194 KB) Roman Lebedev, 07/11/2015 03:45 PM

0001-DtPthread-rwlock-add-some-debugging-output.patch Magnifier (11.2 KB) Roman Lebedev, 07/11/2015 04:03 PM

gdb.txt Magnifier (133 KB) Roman Lebedev, 07/11/2015 04:05 PM

Associated revisions

Revision 30705fd4
Added by Roman Lebedev almost 4 years ago

dt_pthread_rwlock_*(): use _sync_fetch_and*(). Fixes #10583

This also shows that name256 in dt_pthread_rwlock_t can not
be reliably used to debug rwlock's misuse - needs some locking.

History

#1 Updated by Roman Lebedev about 4 years ago

With some added debug printfs:
rwlock->name = "tr:/home/lebedevri/darktable/src/control/jobs/image_jobs.c:36", rwlock->cnt = -1
unlock:/home/lebedevri/darktable/src/common/cache.c:286
rwlock->name = "tr:/home/lebedevri/darktable/src/control/jobs/image_jobs.c:36", rwlock->cnt = -1
unlock:/home/lebedevri/darktable/src/common/cache.c:286
rwlock->name = "tr:/home/lebedevri/darktable/src/control/jobs/image_jobs.c:36", rwlock->cnt = -1
darktable: /home/lebedevri/darktable/src/common/dtpthread.h:221: dt_pthread_rwlock_unlock_with_caller: Assertion `rwlock->cnt >= 0' failed.
darktable: /home/lebedevri/darktable/src/common/dtpthread.h:221: dt_pthread_rwlock_unlock_with_caller: Assertion `rwlock->cnt >= 0' failed.
darktable: /home/lebedevri/darktable/src/common/dtpthread.h:221: dt_pthread_rwlock_unlock_with_caller: Assertion `rwlock->cnt >= 0' failed.
unlock:/home/lebedevri/darktable/src/common/cache.c:286
unlock:/home/lebedevri/darktable/src/common/cache.c:286
rwlock->name = "tr:/home/lebedevri/darktable/src/control/jobs/image_jobs.c:36", rwlock->cnt = -1
darktable: /home/lebedevri/darktable/src/common/dtpthread.h:221: dt_pthread_rwlock_unlock_with_caller: Assertion `rwlock->cnt >= 0' failed.
Aborted

#2 Updated by Roman Lebedev about 4 years ago

Output:
rwlock->name = "tr:/home/lebedevri/darktable/src/control/jobs/image_jobs.c:36", rwlock->cnt = -1
rwlock->name = "", rwlock->cnt = -1
rwlock->name = "tr:/home/lebedevri/darktable/src/control/jobs/image_jobs.c:36", rwlock->cnt = -1
unlock:/home/lebedevri/darktable/src/common/cache.c:286
rwlock->name = "tr:/home/lebedevri/darktable/src/control/jobs/image_jobs.c:36", rwlock->cnt = -1
unlock:/home/lebedevri/darktable/src/common/cache.c:286
unlock:/home/lebedevri/darktable/src/common/cache.c:286
darktable: /home/lebedevri/darktable/src/common/dtpthread.h:221: dt_pthread_rwlock_unlock_with_caller: Assertion `rwlock->cnt >= 0' failed.
darktable: /home/lebedevri/darktable/src/common/dtpthread.h:221: dt_pthread_rwlock_unlock_with_caller: Assertion `rwlock->cnt >= 0' failed.
unlock:/home/lebedevri/darktable/src/common/cache.c:286
darktable: /home/lebedevri/darktable/src/common/dtpthread.h:221: dt_pthread_rwlock_unlock_with_caller: Assertion `rwlock->cnt >= 0' failed.
unlock:/home/lebedevri/darktable/src/common/cache.c:286
rwlock->name = "tr:/home/lebedevri/darktable/src/control/jobs/image_jobs.c:36", rwlock->cnt = -1
darktable: /home/lebedevri/darktable/src/common/dtpthread.h:221: dt_pthread_rwlock_unlock_with_caller: Assertion `rwlock->cnt >= 0' failed.
unlock:/home/lebedevri/darktable/src/common/cache.c:286
unlock:/home/lebedevri/darktable/src/common/cache.c:286
darktable: /home/lebedevri/darktable/src/common/dtpthread.h:221: dt_pthread_rwlock_unlock_with_caller: Assertion `rwlock->cnt >= 0' failed.
Aborted

#3 Updated by Roman Lebedev about 4 years ago

rwlock->name = "unlocked:/home/lebedevri/darktable/src/common/cache.c:286", rwlock->cnt = -1
unlock:/home/lebedevri/darktable/src/common/cache.c:286
rwlock->name = "tr:/home/lebedevri/darktable/src/control/jobs/image_jobs.c:36", rwlock->cnt = -1
unlock:/home/lebedevri/darktable/src/common/cache.c:286
rwlock->name = "tr:/home/lebedevri/darktable/src/control/jobs/image_jobs.c:36", rwlock->cnt = -1
unlock:/home/lebedevri/darktable/src/common/cache.c:286
darktable: /home/lebedevri/darktable/src/common/dtpthread.h:221: dt_pthread_rwlock_unlock_with_caller: Assertion `rwlock->cnt >= 0' failed.
rwlock->name = "tr:/home/lebedevri/darktable/src/control/jobs/image_jobs.c:36", rwlock->cnt = -1
unlock:/home/lebedevri/darktable/src/common/cache.c:286
darktable: /home/lebedevri/darktable/src/common/dtpthread.h:221: dt_pthread_rwlock_unlock_with_caller: Assertion `rwlock->cnt >= 0' failed.
darktable: /home/lebedevri/darktable/src/common/dtpthread.h:221: dt_pthread_rwlock_unlock_with_caller: Assertion `rwlock->cnt >= 0' failed.
rwlock->name = "tr:/home/lebedevri/darktable/src/control/jobs/image_jobs.c:36", rwlock->cnt = -1
unlock:/home/lebedevri/darktable/src/common/cache.c:286
unlock:/home/lebedevri/darktable/src/common/cache.c:286
Aborted

#4 Updated by Roman Lebedev about 4 years ago

rwlock->name = "unlocked:/home/lebedevri/darktable/src/common/mipmap_cache.c:751", rwlock->cnt = -1
unlock:/home/lebedevri/darktable/src/common/mipmap_cache.c:751
darktable: /home/lebedevri/darktable/src/common/dtpthread.h:221: dt_pthread_rwlock_unlock_with_caller: Assertion `rwlock->cnt >= 0' failed.
Aborted

#5 Updated by Roman Lebedev about 4 years ago

rwlock->name = "unlocked:/home/lebedevri/darktable/src/control/jobs/image_j36", rwlock->cnt = -1
unlock:/home/lebedevri/darktable/src/control/jobs/image_jobs.c:39
darktable: /home/lebedevri/darktable/src/common/dtpthread.h:221: dt_pthread_rwlock_unlock_with_caller: Assertion `rwlock->cnt >= 0' failed.
rwlock->name = "tr:/home/lebedevri/darktable/src/control/jobs/image_jobs.c:36", rwlock->cnt = -1
unlock:/home/lebedevri/darktable/src/control/jobs/image_jobs.c:39
darktable: /home/lebedevri/darktable/src/common/dtpthread.h:221: dt_pthread_rwlock_unlock_with_caller: Assertion `rwlock->cnt >= 0' failed.
Aborted

#6 Updated by Roman Lebedev about 4 years ago

rwlock->name = "tr:/home/lebedevri/darktable/src/common/mipmap_cache.c:594", rwlock->cnt = -1
unlock:/home/lebedevri/darktable/src/control/jobs/image_jobs.c:39
rwlock->name = "tr:/home/lebedevri/darktable/src/common/mipmap_cache.c:594", rwlock->cnt = -1
unlock:/home/lebedevri/darktable/src/control/jobs/image_jobs.c:39
darktable: /home/lebedevri/darktable/src/common/dtpthread.h:221: dt_pthread_rwlock_unlock_with_caller: Assertion `rwlock->cnt >= 0' failed.

#7 Updated by Roman Lebedev about 4 years ago

rwlock->name = "unlocked:/home/lebedevri/darktable/src/control/jobs/image_jobs.c:39", rwlock->cnt = -1
unlock:/home/lebedevri/darktable/src/control/jobs/image_jobs.c:39
rwlock->name = "tr:/home/lebedevri/darktable/src/common/mipmap_cache.c:594", rwlock->cnt = -1
unlock:/home/lebedevri/darktable/src/control/jobs/image_jobs.c:39
darktable: /home/lebedevri/darktable/src/common/dtpthread.h:221: dt_pthread_rwlock_unlock_with_caller: Assertion `rwlock->cnt >= 0' failed.
darktable: /home/lebedevri/darktable/src/common/dtpthread.h:221: dt_pthread_rwlock_unlock_with_caller: Assertion `rwlock->cnt >= 0' failed.

#8 Updated by Roman Lebedev about 4 years ago

rwlock->name = "unlocked:/home/lebedevri/darktable/src/control/jobs/image_jobs.c:39", rwlock->cnt = -1
unlock:/home/lebedevri/darktable/src/control/jobs/image_jobs.c:39
rwlock->name = "tr:/home/lebedevri/darktable/src/common/cache.c:156", rwlock->cnt = -1
unlock:/home/lebedevri/darktable/src/control/jobs/image_jobs.c:39
darktable: /home/lebedevri/darktable/src/common/dtpthread.h:221: dt_pthread_rwlock_unlock_with_caller: Assertion `rwlock->cnt >= 0' failed.
rwlock->name = "tr:/home/lebedevri/darktable/src/common/cache.c:156", rwlock->cnt = -1
unlock:/home/lebedevri/darktable/src/control/jobs/image_jobs.c:39
rwlock->name = "tr:/home/lebedevri/darktable/src/common/cache.c:156", rwlock->cnt = -1
darktable: /home/lebedevri/darktable/src/common/dtpthread.h:221: dt_pthread_rwlock_unlock_with_caller: Assertion `rwlock->cnt >= 0' failed.
unlock:/home/lebedevri/darktable/src/control/jobs/image_jobs.c:unlock:/home/lebedevri/darktable/src/control/jobs/image_jobs.c:39
rwlock->name = "tr:/home/lebedevri/darktable/src/common/cache.c:156", rwlock->cnt = -1
unlock:/home/lebedevri/darktable/src/control/jobs/image_jobs.c:39
darktable: /home/lebedevri/darktable/src/common/dtpthread.h:221: dt_pthread_rwlock_unlock_with_caller: Assertion `rwlock->cnt >= 0' failed.
darktable: /home/lebedevri/darktable/src/common/dtpthread.h:221: dt_pthread_rwlock_unlock_with_caller: Assertion `rwlock->cnt >= 0' failed.
darktable: /home/lebedevri/darktable/src/common/dtpthread.h:221: dt_pthread_rwlock_unlock_with_caller: Assertion `rwlock->cnt >= 0' failed.

#9 Updated by Roman Lebedev almost 4 years ago

  • Assignee set to Roman Lebedev
  • Status changed from New to In Progress
  • % Done changed from 0 to 50

#10 Updated by Roman Lebedev almost 4 years ago

  • Status changed from In Progress to Fixed
  • % Done changed from 50 to 100

Also available in: Atom PDF