Skip to content

ODR violation when loading sqlsrv and pdo_sqlsrv extensions #1632

@realFlowControl

Description

@realFlowControl

PHP version

Tested on 8.6 (most likely all versions, because this is in the extension)

PHP SQLSRV or PDO_SQLSRV version

5.13.1

Microsoft ODBC Driver version

none

SQL Server version

none

Client operating system

Linux

Table schema

none

Problem description

ASAN ODR Violation when sqlsrv and pdo_sqlsrv extensions are loaded:

==243628==ERROR: AddressSanitizer: odr-violation (0xfffa38b5ffe0):
  [1] size=24 'g_sqlsrv_stream_wrapper' /tmp/sqlsrv-5.13.1/shared/core_stream.cpp:312:20 in /usr/lib/php/20250926/sqlsrv.so
  [2] size=24 'g_sqlsrv_stream_wrapper' /tmp/pdo_sqlsrv-5.13.1/shared/core_stream.cpp:312:20 in /usr/lib/php/20250926/pdo_sqlsrv.so
These globals were registered at these points:
  [1]:
    #0 0xfffa4bb92420 in __asan_register_globals ../../../../src/libsanitizer/asan/asan_globals.cpp:350
    #1 0xfffa4c26bb10  (/lib/ld-linux-aarch64.so.1+0x4b10) (BuildId: f3d28c5cab7887a8195f6b130d76b8faf126b168)
    #2 0xfffa4c26bc20  (/lib/ld-linux-aarch64.so.1+0x4c20) (BuildId: f3d28c5cab7887a8195f6b130d76b8faf126b168)
    #3 0xfffa4c2683ac in _dl_catch_exception (/lib/ld-linux-aarch64.so.1+0x13ac) (BuildId: f3d28c5cab7887a8195f6b130d76b8faf126b168)
    #4 0xfffa4c271d18  (/lib/ld-linux-aarch64.so.1+0xad18) (BuildId: f3d28c5cab7887a8195f6b130d76b8faf126b168)
    #5 0xfffa4c268338 in _dl_catch_exception (/lib/ld-linux-aarch64.so.1+0x1338) (BuildId: f3d28c5cab7887a8195f6b130d76b8faf126b168)
    #6 0xfffa4c272118  (/lib/ld-linux-aarch64.so.1+0xb118) (BuildId: f3d28c5cab7887a8195f6b130d76b8faf126b168)
    #7 0xfffa4aa01570  (/lib/aarch64-linux-gnu/libc.so.6+0x81570) (BuildId: d5ef86dde36cbd3289566cf5098226035d76f2e1)
    #8 0xfffa4c268338 in _dl_catch_exception (/lib/ld-linux-aarch64.so.1+0x1338) (BuildId: f3d28c5cab7887a8195f6b130d76b8faf126b168)
    #9 0xfffa4c268458  (/lib/ld-linux-aarch64.so.1+0x1458) (BuildId: f3d28c5cab7887a8195f6b130d76b8faf126b168)
    #10 0xfffa4aa00ff0  (/lib/aarch64-linux-gnu/libc.so.6+0x80ff0) (BuildId: d5ef86dde36cbd3289566cf5098226035d76f2e1)
    #11 0xfffa4aa0164c in dlopen (/lib/aarch64-linux-gnu/libc.so.6+0x8164c) (BuildId: d5ef86dde36cbd3289566cf5098226035d76f2e1)
    #12 0xfffa4bbb9320 in dlopen ../../../../src/libsanitizer/sanitizer_common/sanitizer_common_interceptors.inc:6341
    #13 0xab135b8caed8 in php_load_shlib /tmp/php-build/source/8.6/ext/standard/dl.c:86
    #14 0xab135b8cb094 in php_load_extension /tmp/php-build/source/8.6/ext/standard/dl.c:150
    #15 0xab135c776800 in zend_llist_apply /tmp/php-build/source/8.6/Zend/zend_llist.c:182
    #16 0xab135bc4407c in php_ini_register_extensions /tmp/php-build/source/8.6/main/php_ini.c:743
    #17 0xab135bc25208 in php_module_startup /tmp/php-build/source/8.6/main/main.c:2357
    #18 0xab135aa498f8 in main /tmp/php-build/source/8.6/sapi/cli/php_cli.c:1337
    #19 0xfffa4a9a84c0  (/lib/aarch64-linux-gnu/libc.so.6+0x284c0) (BuildId: d5ef86dde36cbd3289566cf5098226035d76f2e1)
    #20 0xfffa4a9a8594 in __libc_start_main (/lib/aarch64-linux-gnu/libc.so.6+0x28594) (BuildId: d5ef86dde36cbd3289566cf5098226035d76f2e1)
    #21 0xab135aa49f6c in _start (/usr/bin/php8.6+0x3649f6c) (BuildId: 6b4968badf03bc648c3e5ace4137468cb6600697)

  [2]:
    #0 0xfffa4bb92420 in __asan_register_globals ../../../../src/libsanitizer/asan/asan_globals.cpp:350
    #1 0xfffa4c26bb10  (/lib/ld-linux-aarch64.so.1+0x4b10) (BuildId: f3d28c5cab7887a8195f6b130d76b8faf126b168)
    #2 0xfffa4c26bc20  (/lib/ld-linux-aarch64.so.1+0x4c20) (BuildId: f3d28c5cab7887a8195f6b130d76b8faf126b168)
    #3 0xfffa4c2683ac in _dl_catch_exception (/lib/ld-linux-aarch64.so.1+0x13ac) (BuildId: f3d28c5cab7887a8195f6b130d76b8faf126b168)
    #4 0xfffa4c271d18  (/lib/ld-linux-aarch64.so.1+0xad18) (BuildId: f3d28c5cab7887a8195f6b130d76b8faf126b168)
    #5 0xfffa4c268338 in _dl_catch_exception (/lib/ld-linux-aarch64.so.1+0x1338) (BuildId: f3d28c5cab7887a8195f6b130d76b8faf126b168)
    #6 0xfffa4c272118  (/lib/ld-linux-aarch64.so.1+0xb118) (BuildId: f3d28c5cab7887a8195f6b130d76b8faf126b168)
    #7 0xfffa4aa01570  (/lib/aarch64-linux-gnu/libc.so.6+0x81570) (BuildId: d5ef86dde36cbd3289566cf5098226035d76f2e1)
    #8 0xfffa4c268338 in _dl_catch_exception (/lib/ld-linux-aarch64.so.1+0x1338) (BuildId: f3d28c5cab7887a8195f6b130d76b8faf126b168)
    #9 0xfffa4c268458  (/lib/ld-linux-aarch64.so.1+0x1458) (BuildId: f3d28c5cab7887a8195f6b130d76b8faf126b168)
    #10 0xfffa4aa00ff0  (/lib/aarch64-linux-gnu/libc.so.6+0x80ff0) (BuildId: d5ef86dde36cbd3289566cf5098226035d76f2e1)
    #11 0xfffa4aa0164c in dlopen (/lib/aarch64-linux-gnu/libc.so.6+0x8164c) (BuildId: d5ef86dde36cbd3289566cf5098226035d76f2e1)
    #12 0xfffa4bbb9320 in dlopen ../../../../src/libsanitizer/sanitizer_common/sanitizer_common_interceptors.inc:6341
    #13 0xab135b8caed8 in php_load_shlib /tmp/php-build/source/8.6/ext/standard/dl.c:86
    #14 0xab135b8cb094 in php_load_extension /tmp/php-build/source/8.6/ext/standard/dl.c:150
    #15 0xab135c776800 in zend_llist_apply /tmp/php-build/source/8.6/Zend/zend_llist.c:182
    #16 0xab135bc4407c in php_ini_register_extensions /tmp/php-build/source/8.6/main/php_ini.c:743
    #17 0xab135bc25208 in php_module_startup /tmp/php-build/source/8.6/main/main.c:2357
    #18 0xab135aa498f8 in main /tmp/php-build/source/8.6/sapi/cli/php_cli.c:1337
    #19 0xfffa4a9a84c0  (/lib/aarch64-linux-gnu/libc.so.6+0x284c0) (BuildId: d5ef86dde36cbd3289566cf5098226035d76f2e1)
    #20 0xfffa4a9a8594 in __libc_start_main (/lib/aarch64-linux-gnu/libc.so.6+0x28594) (BuildId: d5ef86dde36cbd3289566cf5098226035d76f2e1)
    #21 0xab135aa49f6c in _start (/usr/bin/php8.6+0x3649f6c) (BuildId: 6b4968badf03bc648c3e5ace4137468cb6600697)

==243628==HINT: if you don't care about these errors you may set ASAN_OPTIONS=detect_odr_violation=0
SUMMARY: AddressSanitizer: odr-violation: global 'g_sqlsrv_stream_wrapper' at /tmp/sqlsrv-5.13.1/shared/core_stream.cpp:312:20 in /usr/lib/php/20250926/sqlsrv.so
==243628==ABORTING

Expected behavior and actual behavior

No ODR violation

Repro code or steps to reproduce

ASAN enabled version of PHP with sqlsrv and pdo_sqlsrv extensions loaded:

$ php -v
// ASAN output from above

Context

I am currently working on building ASAN images for the setup-php action for GitHub actions in https://github.com/shivammathur/php-builder/, the smoke test is failing with this ODR violation:
https://github.com/shivammathur/php-builder/actions/runs/26163595733/job/76987312204?pr=20#step:12:17

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type
No fields configured for issues without a type.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions