mesonbuild/meson

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

Open

#14,452 opened on Apr 5, 2025

View on GitHub
 (5 comments) (0 reactions) (0 assignees)Python (4,978 stars) (1,465 forks)batch import
exceptiongood first issue

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