php / php/php-src

address argument to atomic operation must be a pointer to non-const _Atomic type

Open
#8,881 10 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Bug Category: Engine Status: Needs Triage
Dominant language
C
Stars
40.4k
Forks
8.1k
Avg merge
2d 13h
Merged PRs (30d)
96

Description

Description

Hello! I'm the maintainer of php in MacPorts, and I noticed this build failure of php 8.2.0alpha2 and 8.2.0alpha1 on macOS 10.13 with Xcode 9.4.1 and its Apple clang 902.0.39.2:

Zend/zend_atomic.h:85:9: error: address argument to atomic operation must be a pointer to non-const _Atomic type ('const _Atomic(bool) *' invalid)
        return __c11_atomic_load(&obj->value, __ATOMIC_SEQ_CST);
               ^                 ~~~~~~~~~~~

Here is a full failed build log from macOS 10.13.

I also verified the problem on macOS 10.13 with Xcode 10.1 and its Apple clang 1000.11.45.5.

It also fails similarly on macOS 10.12, OS X 10.11, and OS X 10.10.

The build succeeds on macOS 10.14 with Xcode 10.3 and its Apple clang 1001.0.46.4 and on newer systems. Here is a full successful build log from macOS 10.14.

Curiously the build also succeeds on much older systems like OS X 10.9, OS X 10.8, and Mac OS X 10.7 with their older versions of Xcode and clang.

I see "c11" in the error message but I don't see -std=c11 being passed to the compiler. Thinking this might be a situation where certain older compilers would support whatever you're wanting to do if only you would ask the compiler to be in c11 mode, I tried adding -std=c11 on macOS 10.13 with Xcode 10.1 and its Apple clang 1000.11.45.5, and I also tried -std=gnu11, but neither of those changed the error.

php 8.1.7 and earlier don't have this problem.

PHP Version

8.2.0alpha2

Operating System

macOS 10.13.6

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start with Zend/zend_atomic.h and reproduce the PHP 8.2 build on the affected macOS and Apple clang versions listed in the report. Compare the atomic operation behavior across the reported compiler versions; the work is done when PHP builds successfully on the affected systems without regressing the newer and older configurations.

Written by the indexing model from the issue text.

Assessment

Tech stack
c, php
Domain
build-system, operating-systems
Issue type
Bug
Difficulty
3/5
Estimated time
1-2 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
48/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.