[Pthreads] Mutex misbruikt als soort semaphore.

Pagina: 1
Acties:

Vraag


  • j.roeloffzen
  • Registratie: Maart 2026
  • Laatst online: 25-03 09:20
Beste Forum,

Ik heb een stuk C code in beheer (niet door mij geschreven) dat gebruikt een pthread_mutex_lock en pthread_mutex_unlock call. De unlock wordt in een andere thread dan de lock gedaan. Dit werkt toevallig maar is gedocumenteerd (in de manpage van pthread_mutex_lock) als "undefined behaviour". De mutex is default/non-robust geinitialiseert. Ik beschouw het als een bug maar dit veranderen kost enige tijd (Testen , qualificatie, etc ..)

Mijn vraag is hoe dit te benaderen, 2 keuzes:
A - "It ain't broken , don't fix it" Undefined behaviour blijft ongewijzigd, ook na evt OS updates.
B - De code kan beslist omvallen na een OS of library update, dus beslist fixen. Bijvoorbeeld de call returns nu een error.

Graag enig advies.

Jan Roeloffzen

[ Voor 0% gewijzigd door j.roeloffzen op 23-03-2026 14:56 . Reden: unintended smiley ]

Beste antwoord (via j.roeloffzen op 23-03-2026 15:25)


  • jeroen3
  • Registratie: Mei 2010
  • Laatst online: 05:43
Testcases toevoegen aan de unit tests die controleren of het "undefined" gedrag nog is wat je verwacht.

Alle reacties


Acties:
  • Beste antwoord

  • jeroen3
  • Registratie: Mei 2010
  • Laatst online: 05:43
Testcases toevoegen aan de unit tests die controleren of het "undefined" gedrag nog is wat je verwacht.

  • GarBaGe
  • Registratie: December 1999
  • Laatst online: 11:29
Documenteren als "tech debt issue" en een ranking geven.
Dan kan je eraan beginnen wanneer het belangrijk genoeg is (in verhouding tot je overige werk / issues)

Ryzen9 5900X; 16GB DDR4-3200 ; RTX-4080S ; 7TB SSD


  • j.roeloffzen
  • Registratie: Maart 2026
  • Laatst online: 25-03 09:20
jeroen3 schreef op maandag 23 maart 2026 @ 14:57:
Testcases toevoegen aan de unit tests die controleren of het "undefined" gedrag nog is wat je verwacht.
Vriendelijk bedankt voor het antwoord,.Het is geen slecht idee, maar als ik er vanuit moet gaan dat het kan omvallen (en dat was de eigenlijke vraag) kan ik het net zo goed vooraf fixen (optie B dus) . Het kan een behoorlijke tijd duren voor het ooit gereproduceerd wordt namelijk.

  • j.roeloffzen
  • Registratie: Maart 2026
  • Laatst online: 25-03 09:20
GarBaGe schreef op maandag 23 maart 2026 @ 14:58:
Documenteren als "tech debt issue" en een ranking geven.
Dan kan je eraan beginnen wanneer het belangrijk genoeg is (in verhouding tot je overige werk / issues)
Bedankt voor je antwoord. Het is idd een bestaand JIRA issue en ong. in het midden vd backlog, wat betreft de ranking ...

  • Xyrr
  • Registratie: Maart 2009
  • Laatst online: 19-04 23:26
Ik zou dit niet proberen af te vangen met een unit test, want dat biedt hier geen garantie. Of de undefined behavior tot problemen leidt kan zomaar verschillen per compiler of libc versie. Dus als je je unit test executable met een andere compiler(versie) maakt dan je productie executable (niet slim, maar zo'n fout is makkelijk gemaakt) of als het systeem waarop de executable wordt gebruikt een andere libc versie heeft dan het systeem waar je unit tests op draaien, dan kan een undefined behavior probleem er zo langs glippen.

Dus inderdaad gewoon aanmerken als tech debt, en naar prioriteit oplossen.

  • farlane
  • Registratie: Maart 2000
  • Laatst online: 18-04 23:33
Dit werkt toevallig maar is gedocumenteerd (in de manpage van pthread_mutex_lock) als "undefined behaviour".
Hoe heb je bepaald dat het werkt eigenlijk?

Somniferous whisperings of scarlet fields. Sleep calling me and in my dreams i wander. My reality is abandoned (I traverse afar). Not a care if I never everwake.

Pagina: 1