mesonbuild/meson

ValueError: invalid literal for int() with base 10: '' when sanitizer flags break test binary

Closed

#14,452 opened on Apr 5, 2025

 (5 comments) (0 reactions) (0 assignees)Python (1,465 forks)batch import
exceptiongood first issue

Repository metrics

Stars
 (4,978 stars)
PR merge metrics
 (Avg merge 139d 13h) (51 merged PRs in 30d)

Description

Describe the bug I was trying to work around #13211 and triggered a ValueError while experimenting with various sanitizer flags and environment variables:

Traceback (most recent call last):
  File "/usr/lib/python3.13/site-packages/mesonbuild/mesonmain.py", line 193, in run
    return options.run_func(options)
           ~~~~~~~~~~~~~~~~^^^^^^^^^
  File "/usr/lib/python3.13/site-packages/mesonbuild/msetup.py", line 365, in run
    app.generate()
    ~~~~~~~~~~~~^^
  File "/usr/lib/python3.13/site-packages/mesonbuild/msetup.py", line 188, in generate
    return self._generate(env, capture, vslite_ctx)
           ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.13/site-packages/mesonbuild/msetup.py", line 227, in _generate
    intr.run()
    ~~~~~~~~^^
  File "/usr/lib/python3.13/site-packages/mesonbuild/interpreter/interpreter.py", line 3083, in run
    super().run()
    ~~~~~~~~~~~^^
  File "/usr/lib/python3.13/site-packages/mesonbuild/interpreterbase/interpreterbase.py", line 169, in run
    self.evaluate_codeblock(self.ast, start=1)
    ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.13/site-packages/mesonbuild/interpreterbase/interpreterbase.py", line 194, in evaluate_codeblock
    raise e
  File "/usr/lib/python3.13/site-packages/mesonbuild/interpreterbase/interpreterbase.py", line 186, in evaluate_codeblock
    self.evaluate_statement(cur)
    ~~~~~~~~~~~~~~~~~~~~~~~^^^^^
  File "/usr/lib/python3.13/site-packages/mesonbuild/interpreterbase/interpreterbase.py", line 240, in evaluate_statement
    self.evaluate_foreach(cur)
    ~~~~~~~~~~~~~~~~~~~~~^^^^^
  File "/usr/lib/python3.13/site-packages/mesonbuild/interpreterbase/interpreterbase.py", line 478, in evaluate_foreach
    self.evaluate_codeblock(node.block)
    ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^
  File "/usr/lib/python3.13/site-packages/mesonbuild/interpreterbase/interpreterbase.py", line 194, in evaluate_codeblock
    raise e
  File "/usr/lib/python3.13/site-packages/mesonbuild/interpreterbase/interpreterbase.py", line 186, in evaluate_codeblock
    self.evaluate_statement(cur)
    ~~~~~~~~~~~~~~~~~~~~~~~^^^^^
  File "/usr/lib/python3.13/site-packages/mesonbuild/interpreterbase/interpreterbase.py", line 204, in evaluate_statement
    self.assignment(cur)
    ~~~~~~~~~~~~~~~^^^^^
  File "/usr/lib/python3.13/site-packages/mesonbuild/interpreterbase/interpreterbase.py", line 641, in assignment
    value = self.evaluate_statement(node.value)
  File "/usr/lib/python3.13/site-packages/mesonbuild/interpreterbase/interpreterbase.py", line 206, in evaluate_statement
    return self.method_call(cur)
           ~~~~~~~~~~~~~~~~^^^^^
  File "/usr/lib/python3.13/site-packages/mesonbuild/interpreterbase/interpreterbase.py", line 556, in method_call
    res = obj.method_call(method_name, args, kwargs)
  File "/usr/lib/python3.13/site-packages/mesonbuild/interpreterbase/baseobjects.py", line 81, in method_call
    return method(args, kwargs)
  File "/usr/lib/python3.13/site-packages/mesonbuild/interpreterbase/decorators.py", line 237, in wrapper
    return f(*nargs, **wrapped_kwargs)
  File "/usr/lib/python3.13/site-packages/mesonbuild/interpreterbase/decorators.py", line 556, in wrapper
    return f(*wrapped_args, **wrapped_kwargs)
  File "/usr/lib/python3.13/site-packages/mesonbuild/interpreter/compiler.py", line 483, in sizeof_method
    esize, cached = self.compiler.sizeof(element, kwargs['prefix'], self.environment,
                    ~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
                                         extra_args=extra_args, dependencies=deps)
                                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.13/site-packages/mesonbuild/compilers/mixins/clike.py", line 593, in sizeof
    return int(res.stdout), res.cached
           ~~~^^^^^^^^^^^^
ValueError: invalid literal for int() with base 10: ''

meson-log.txt

Running compile:
Working directory:  code/temp2/gobject-introspection/builddir/meson-private/tmps8khrfka
Code:

        #include<stddef.h>
        #include<stdio.h>
        int main(void) {
            printf("%ld\n", (long)(sizeof(char)));
            return 0;
        }
-----------
Command line: `clang code/temp2/gobject-introspection/builddir/meson-private/tmps8khrfka/testfile.c -o code/temp2/gobject-introspection/builddir/meson-private/tmps8khrfka/output.exe -fsanitize=address -shared-libasan -D_FILE_OFFSET_BITS=64 -O0 -Werror=implicit-function-declaration -std=gnu99 -nostdlib -Wl,-rpath,/usr/lib/clang/19/lib/linux/` -> 0
stderr:
/usr/bin/ld: warning: cannot find entry symbol _start; defaulting to 0000000000001060
-----------
Program stdout:


Program stderr:

AddressSanitizer:DEADLYSIGNAL
AddressSanitizer: nested bug in the same thread, aborting.

To Reproduce

git clone --depth=1 https://gitlab.gnome.org/GNOME/gobject-introspection.git
cd gobject-introspection/

LSAN_OPTIONS="exitcode=0" CC=clang CFLAGS="-fsanitize=address -shared-libasan" LDFLAGS="-fsanitize=address -nostdlib -Wl,-rpath,/usr/lib/clang/19/lib/linux/" meson setup builddir

Expected behavior I would expect the ValueError to be caught/avoided and an error message to be printed instead

system parameters

  • Is this a cross build or just a plain native build (for the same computer)?
    • Native build
  • what operating system (e.g. MacOS Catalina, Windows 10, CentOS 8.0, Ubuntu 18.04, etc.)
    • Arch Linux
  • what Python version are you using e.g. 3.8.0
    • Python 3.13.2
  • what meson --version
    • 1.7.2
  • what ninja --version if it's a Ninja build
    • 1.12.1

Contributor guide