Skip to content

GitLab

  • Projects
  • Groups
  • Snippets
  • Help
    • Loading...
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
    • Contribute to GitLab
  • Sign in / Register
BIND
BIND
  • Project overview
    • Project overview
    • Details
    • Activity
    • Releases
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributors
    • Graph
    • Compare
  • Issues 582
    • Issues 582
    • List
    • Boards
    • Labels
    • Service Desk
    • Milestones
  • Merge Requests 110
    • Merge Requests 110
  • CI / CD
    • CI / CD
    • Pipelines
    • Jobs
    • Schedules
  • Operations
    • Operations
    • Incidents
    • Environments
  • Packages & Registries
    • Packages & Registries
    • Container Registry
  • Analytics
    • Analytics
    • CI / CD
    • Repository
    • Value Stream
  • Wiki
    • Wiki
  • Snippets
    • Snippets
  • Members
    • Members
  • Collapse sidebar
  • Activity
  • Graph
  • Create a new issue
  • Jobs
  • Commits
  • Issue Boards
  • ISC Open Source Projects
  • BINDBIND
  • Issues
  • #1757

Closed
Open
Opened Apr 15, 2020 by Ondřej Surý@ondrejOwner

Workaround the signed atomic operations because of Windows stdatomic.h shim

We found out that our win32 stdatomic.h shim converts all signed integers to unsigned. The proper workaround for this is to load the value into a local variable first and then use the variable instead of directly calling atomic_load(). We need to investigate the rest of the atomic_int_* usage in BIND 9 source code for similar errors:

lib/isc/hp.c:static atomic_int_fast32_t tid_v_base = ATOMIC_VAR_INIT(0);
lib/isc/include/isc/mutexatomic.h:typedef struct atomic_int_fast32 {
lib/isc/include/isc/mutexatomic.h:} atomic_int_fast32_t;
lib/isc/include/isc/mutexatomic.h:typedef struct atomic_int_fast64 {
lib/isc/include/isc/mutexatomic.h:} atomic_int_fast64_t;
lib/isc/include/isc/rwlock.h:   atomic_int_fast32_t spins;
lib/isc/include/isc/rwlock.h:   atomic_int_fast32_t write_requests;
lib/isc/include/isc/rwlock.h:   atomic_int_fast32_t write_completions;
lib/isc/include/isc/rwlock.h:   atomic_int_fast32_t cnt_and_flag;
lib/isc/log.c:  atomic_int_fast32_t debug_level;
lib/isc/log.c:  atomic_int_fast32_t highest_level;
lib/isc/netmgr/netmgr-int.h:    atomic_int_fast64_t pktcount;
lib/isc/netmgr/netmgr-int.h:    atomic_int_fast32_t rchildren;
lib/isc/netmgr/netmgr-int.h:    atomic_int_fast32_t ah;
lib/isc/stats.c:typedef atomic_int_fast32_t isc__atomic_statcounter_t;
lib/isc/stats.c:typedef atomic_int_fast64_t isc__atomic_statcounter_t;
lib/isc/tests/task_test.c:atomic_int_fast32_t counter;
lib/isc/tests/task_test.c:      atomic_int_fast32_t *value = (atomic_int_fast32_t *)event->ev_arg;
lib/isc/tests/task_test.c:      atomic_int_fast32_t *value = (atomic_int_fast32_t *)event->ev_arg;
lib/isc/tests/task_test.c:      atomic_int_fast32_t a, b;
lib/isc/tests/task_test.c:      atomic_int_fast32_t a, b, c, d, e;
lib/isc/tests/task_test.c:      atomic_int_fast32_t a, b, c, d, e; /* non valid states */
lib/isc/tests/timer_test.c:static atomic_int_fast32_t eventcnt;
Assignee
Assign to
February 2021 (9.11.28, 9.11.28-S1, 9.16.12, 9.16.12-S1, 9.17.10)
Milestone
February 2021 (9.11.28, 9.11.28-S1, 9.16.12, 9.16.12-S1, 9.17.10)
Assign milestone
Time tracking
None
Due date
None
Reference: isc-projects/bind9#1757