Skip to content

Score-P help breaks Python binding workflow #165

@Thyre

Description

@Thyre

Trying to print a help, for example to know which options are available, causes the Python bindings to abort. In a test installation with Score-P v8.4 and Python 3.10 in Ubuntu 22.04 LTS, I got the following error message when trying this workflow:

$ python3 -m scorep --help
scorep: Did not find a script to run
$ python3 -m scorep --help test.py
/tmp/scorep.xuh2d3d7/scorep_init.c:2:6: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘:’ token
    2 | Usage:
      |      ^
/tmp/scorep.xuh2d3d7/scorep_init.c:113:24: error: stray ‘@’ in program
  113 | Report bugs to <support@score-p.org>
      |                        ^
Traceback (most recent call last):
  File "/usr/lib/python3.10/distutils/unixccompiler.py", line 117, in _compile
    self.spawn(compiler_so + cc_args + [src, '-o', obj] +
  File "/usr/lib/python3.10/distutils/ccompiler.py", line 910, in spawn
    spawn(cmd, dry_run=self.dry_run)
  File "/usr/lib/python3.10/distutils/spawn.py", line 91, in spawn
    raise DistutilsExecError(
distutils.errors.DistutilsExecError: command '/usr/bin/cc' failed with exit code 1

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/lib/python3.10/runpy.py", line 196, in _run_module_as_main
    return _run_code(code, main_globals, None,
  File "/usr/lib/python3.10/runpy.py", line 86, in _run_code
    exec(code, run_globals)
  File "/home/jreuter/Env/test_Env/lib/python3.10/site-packages/scorep/__main__.py", line 142, in <module>
    scorep_main()
  File "/home/jreuter/Env/test_Env/lib/python3.10/site-packages/scorep/__main__.py", line 77, in scorep_main
    scorep.subsystem.init_environment(scorep_config, keep_files, verbose)
  File "/home/jreuter/Env/test_Env/lib/python3.10/site-packages/scorep/subsystem.py", line 129, in init_environment
    subsystem_lib_name, temp_dir = generate(scorep_config, keep_files)
  File "/home/jreuter/Env/test_Env/lib/python3.10/site-packages/scorep/subsystem.py", line 94, in generate
    compiled_subsystem = cc.compile(
  File "/usr/lib/python3.10/distutils/ccompiler.py", line 574, in compile
    self._compile(obj, src, ext, cc_args, extra_postargs, pp_opts)
  File "/usr/lib/python3.10/distutils/unixccompiler.py", line 120, in _compile
    raise CompileError(msg)
distutils.errors.CompileError: command '/usr/bin/cc' failed with exit code 1

It looks like the help option is directly passed to scorep-config. This is fine. However, it should then not continue trying to instrument the file. In theory, the command should also work without passing a Python file to instrument.


Environment:

scorep-info config-summary:

Click to open
Configure command:
  ../configure                  '--prefix=/opt/apps/software/Compilers/MPI/GCCcore/GCCcore/OpenMPI/5.0.5/Score-P/8.4/' \
                                '--with-nocross-compiler-suite=gcc' \
                                '--enable-shared' \
                                '--enable-debug' \
                                '--enable-default=ompt' \
                                '--without-shmem' \
                                '--with-libcupti=/opt/apps/software/Core/Libraries/CUDA/12.5.1/extras/CUPTI/'

Environment modules loaded:
  module load                   GCCcore/GCCcore \
                                OpenMPI/5.0.5 \
                                CubeLib/4.8.2 \
                                CubeWriter/4.8.2 \
                                OTF2/3.1-rc3 \
                                OPARI2/2.0.8 \
                                libbfd/2.42 \
                                PAPI/7.1 \
                                CUDA/12.5.1

Configuration summary:
  Score-P 8.4:
    Platform:                   linux (auto detected)
    Cross compiling:            no (auto detected)
    Machine name:               Linux
    otf2 support:               yes, using external via /opt/apps/software/Core/SWAT/OTF2/3.1-rc3/bin/otf2-config
    opari2 support:             yes, using external via /opt/apps/software/Core/SWAT/OPARI2/2.0.8/bin/opari2-config
    cubew support:              yes, using external via /opt/apps/software/Core/SWAT/CubeWriter/4.8.2/bin/cubew-config
    cubelib support:            yes, using external via /opt/apps/software/Core/SWAT/CubeLib/4.8.2/bin/cubelib-config
    SHMEM support:              no, explicitly disabled via --without-shmem

    Score-P (backend):
      C99 compiler:             /usr/bin/gcc (gnu 11.4.0)
      C++11 compiler:           /usr/bin/g++ -std=c++11 (gnu 11.4.0)
      Fortran compiler:         /usr/bin/gfortran (gnu)
      Fortran 77 compiler:      /usr/bin/gfortran
      Link mode:                static=yes, shared=yes
      Pthread support:          yes, using gcc -pthread -lpthread
      Compiler instrumentation: yes
        C:                      gcc_plugin
        C++:                    gcc_plugin
        Fortran:                gcc_plugin
      Compiler constructor:     yes, using attribute syntax with arguments
      GCC atomic builtins:      yes
      TLS support:              yes, using __thread and the initial-exec model
      addr2line support:        yes
        libbfd found:           yes, has cplus_demangle
        dl_iterate_phdr:        yes
        rtld-audit:             yes, via --audit instrumentation or LD_AUDIT environment variable
      PAPI support:             yes
      metric perf support:      yes
      Unwinding support:        yes
      Sampling support:         yes, using -D_GNU_SOURCE, sa_sigaction
      getrusage support:        yes
      RUSAGE_THREAD support:    yes, using -D_GNU_SOURCE
      dlfcn support:            yes, using -ldl
      OpenCL support:           yes
        libOpenCL found:        yes, using -lOpenCL
      I/O Recording features:
        POSIX I/O support:      yes
        POSIX asynchronous I/O support: \
                                yes
      OTF2 features:
        SIONlib support:        no
      CUDA support:             yes
        libcudart found:        yes, using -lcudart
        libcuda found:          yes, using -lcuda
        libcupti found:         yes, using -I/opt/apps/software/Core/Libraries/CUDA/12.5.1/extras/CUPTI//include -L/opt/apps/software/Core/Libraries/CUDA/12.5.1/extras/CUPTI//lib64 \
                                -R/opt/apps/software/Core/Libraries/CUDA/12.5.1/extras/CUPTI//lib64 -lcupti
        libnvidia-ml found:     yes, using -lnvidia-ml
        CUDA version:           12050
        nvcc works:             yes, using nvcc -ccbin g++
      HIP support:              no
        libamdhip64 found:      no
        libroctracer64 found:   no
        librocm_smi64 found:    no
      OpenACC support:          yes, with compiler flag
      Kokkos support:           yes
      Mount point extraction:   yes
      Lustre stripe info support: \
                                no, missing lustre/lustreapi.h header
      OpenMP support:           yes
        C support:              yes, recognizing -fopenmp --openmp
        C++ support:            yes, recognizing -fopenmp --openmp
        Fortran support:        yes, recognizing -fopenmp --openmp
        OpenMP pomp_tpd:        yes
        OpenMP ancestry:        yes
      OMPT support:             no
        OMPT header:            no
      PDT support:              no
      Timer support:            yes, providing gettimeofday, clock_gettime(CLOCK_MONOTONIC_RAW), tsc (X86_64)
        Timer LDFLAGS:          -lm
      Memory tracking support:  yes
      Compiler wrappers:        scorep-gcc \
                                scorep-g++ \
                                scorep-gfortran \
                                scorep-mpicc \
                                scorep-mpicxx \
                                scorep-mpif77 \
                                scorep-mpif90 \
                                scorep-nvcc
      User library wrappers support: \
                                no

    Score-P (GCC plug-in):
      C++11 compiler:           /usr/bin/g++ -std=c++11 (gnu 11.4.0)
      GCC atomic builtins:      yes
      TLS support:              yes, using __thread and the initial-exec model
      GCC plug-in support:      yes, using the C++ compiler and -I/usr/lib/gcc/x86_64-linux-gnu/11/plugin/include

    Score-P (libwrap):
      GCC atomic builtins:      yes
      TLS support:              yes, using __thread and the initial-exec model
      Library wrapper support:  no, llvm-config not found

    Score-P (MPI backend):
      MPI C99 compiler:         /opt/apps/software/MPI/OpenMPI/5.0.5/GCCcore/GCCcore/bin/mpicc (gnu 11.4.0)
      MPI C++11 compiler:       /opt/apps/software/MPI/OpenMPI/5.0.5/GCCcore/GCCcore/bin/mpicxx -std=c++11 (gnu 11.4.0)
      MPI Fortran compiler:     /opt/apps/software/MPI/OpenMPI/5.0.5/GCCcore/GCCcore/bin/mpif90 (gnu)
      MPI Fortran 77 compiler:  /opt/apps/software/MPI/OpenMPI/5.0.5/GCCcore/GCCcore/bin/mpif77
      Library used for MPI:
      CUDA support:             yes
        nvcc works:             yes, using nvcc -ccbin mpicxx
      PDT MPI instrumentation:  yes, if PDT available

    Score-P (score):
      C compiler:               /usr/bin/gcc -std=gnu99 (gnu 11.4.0)
      C++ compiler:             /usr/bin/g++ -std=c++11 (gnu 11.4.0)
      cube c++ library support: yes, using -I/opt/apps/software/Core/SWAT/CubeLib/4.8.2/include/cubelib -L/opt/apps/software/Core/SWAT/CubeLib/4.8.2/lib \
                                -Wl,-rpath -Wl,/opt/apps/software/Core/SWAT/CubeLib/4.8.2/lib -lcube4 -lz -lpthread
      GCC atomic builtins:      yes
      TLS support:              yes, using __thread and the initial-exec model

Metadata

Metadata

Assignees

No one assigned

    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