Qalculate / libqalculate

Qalculate! library and CLI
https://qalculate.github.io/
GNU General Public License v2.0
1.79k stars 144 forks source link

SEGV in MathStructure #665

Open dwenking opened 3 months ago

dwenking commented 3 months ago

Hi, I am trying to run an AFL fuzzer on Ubuntu 20.04 to fuzz this project and It seems like I found a SEGV in MathStructure.

Test program

test.cpp:

#include <iostream>
#include <fstream>
#include <cstring>
#include <libqalculate/qalculate.h>

#define MAX_INPUT_SIZE 4096

int main(int argc, char* argv[]) {
    if (argc != 2) {
        std::cout << "Usage: afl_driver <input_file>\n";
        return 1;
    }

    const char* input_file = argv[1];

    // Open the input file
    std::ifstream file(input_file);
    if (!file) {
        std::cerr << "Failed to open input file\n";
        return 1;
    }
    char expression[MAX_INPUT_SIZE];
    // Initialize the calculator
    new Calculator(false);

    while (file.getline(expression, MAX_INPUT_SIZE)) {
        EvaluationOptions eo;
        MathStructure result;
        CALCULATOR->calculate(&result, CALCULATOR->unlocalizeExpression(expression), 2000, eo);
        PrintOptions po;
        std::string result_str = CALCULATOR->print(result, 2000, po);
    }
    // Close the input file
    file.close();
    return 0;
}

build.sh

set -e

SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )"

cd "$SCRIPT_DIR" || exit 1

echo "$SCRIPT_DIR"

build_libqalculate() {
    (
        ./autogen.sh
        CC=gcc CXX=g++ CFLAGS="-g" CXXFLAGS="-g" ./configure --disable-shared
        make -j10
    )
}

build_libqalculate_driver() {
    (
        mkdir -p target/
        cd target/
        g++ -g -fsanitize=address -fno-omit-frame-pointer -I ../libqalculate ../test.cpp -o test ../libqalculate/.libs/libqalculate.a -lgmp -lmpfr -lcurl -lxml2 -ldl -pthread -licuuc
    )
}

ASan report

AddressSanitizer:DEADLYSIGNAL
=================================================================
==3430510==ERROR: AddressSanitizer: SEGV on unknown address 0x000000000000 (pc 0x7f834dc942b3 bp 0x7f8346900800 sp 0x7f83468fff80 T1)
==3430510==The signal is caused by a WRITE memory access.
==3430510==Hint: address points to the zero page.
    #0 0x7f834dc942b3 in MemcmpInterceptorCommon(void*, int (*)(void const*, void const*, unsigned long), void const*, void const*, unsigned long) ../../../../src/libsanitizer/sanitizer_common/sanitizer_common_interceptors.inc:860
    #1 0x7f834dc94bc6 in __interceptor_memcmp ../../../../src/libsanitizer/sanitizer_common/sanitizer_common_interceptors.inc:892
    #2 0x7f834dc94bc6 in __interceptor_memcmp ../../../../src/libsanitizer/sanitizer_common/sanitizer_common_interceptors.inc:887
    #3 0x55ef7a676533 in std::char_traits<char>::compare(char const*, char const*, unsigned long) /usr/include/c++/11/bits/char_traits.h:389
    #4 0x55ef7a676533 in __gnu_cxx::__enable_if<std::__is_char<char>::__value, bool>::__type std::operator==<char>(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) /usr/include/c++/11/bits/basic_string.h:6237
    #5 0x55ef7a676533 in MathStructure::equals(MathStructure const&, bool, bool) const /root/metric/test/libqalculate/libqalculate/MathStructure.cc:1875
    #6 0x55ef7a67675a in MathStructure::contains(MathStructure const&, bool, bool, bool, bool) const /root/metric/test/libqalculate/libqalculate/MathStructure.cc:2490
    #7 0x55ef7a6767a6 in MathStructure::contains(MathStructure const&, bool, bool, bool, bool) const /root/metric/test/libqalculate/libqalculate/MathStructure.cc:2493
    #8 0x55ef7a6767a6 in MathStructure::contains(MathStructure const&, bool, bool, bool, bool) const /root/metric/test/libqalculate/libqalculate/MathStructure.cc:2493
    #9 0x55ef7a6767a6 in MathStructure::contains(MathStructure const&, bool, bool, bool, bool) const /root/metric/test/libqalculate/libqalculate/MathStructure.cc:2493
    #10 0x55ef7a7a7de3 in MathStructure::isolate_x_sub(EvaluationOptions const&, EvaluationOptions&, MathStructure const&, MathStructure*) /root/metric/test/libqalculate/libqalculate/MathStructure-isolatex.cc:641
    #11 0x55ef7a7a9824 in MathStructure::isolate_x_sub(EvaluationOptions const&, EvaluationOptions&, MathStructure const&, MathStructure*) /root/metric/test/libqalculate/libqalculate/MathStructure-isolatex.cc:669
    #12 0x55ef7a7a76e5 in MathStructure::isolate_x(EvaluationOptions const&, EvaluationOptions const&, MathStructure const&, bool) /root/metric/test/libqalculate/libqalculate/MathStructure-isolatex.cc:6270
    #13 0x55ef7a7ad53e in MathStructure::isolate_x_sub(EvaluationOptions const&, EvaluationOptions&, MathStructure const&, MathStructure*) /root/metric/test/libqalculate/libqalculate/MathStructure-isolatex.cc:2223
    #14 0x55ef7a7a9824 in MathStructure::isolate_x_sub(EvaluationOptions const&, EvaluationOptions&, MathStructure const&, MathStructure*) /root/metric/test/libqalculate/libqalculate/MathStructure-isolatex.cc:669
    #15 0x55ef7a7a76e5 in MathStructure::isolate_x(EvaluationOptions const&, EvaluationOptions const&, MathStructure const&, bool) /root/metric/test/libqalculate/libqalculate/MathStructure-isolatex.cc:6270
    #16 0x55ef7a7ad53e in MathStructure::isolate_x_sub(EvaluationOptions const&, EvaluationOptions&, MathStructure const&, MathStructure*) /root/metric/test/libqalculate/libqalculate/MathStructure-isolatex.cc:2223
    #17 0x55ef7a7a9824 in MathStructure::isolate_x_sub(EvaluationOptions const&, EvaluationOptions&, MathStructure const&, MathStructure*) /root/metric/test/libqalculate/libqalculate/MathStructure-isolatex.cc:669
    #18 0x55ef7a7a76e5 in MathStructure::isolate_x(EvaluationOptions const&, EvaluationOptions const&, MathStructure const&, bool) /root/metric/test/libqalculate/libqalculate/MathStructure-isolatex.cc:6270
    #19 0x55ef7a7ad53e in MathStructure::isolate_x_sub(EvaluationOptions const&, EvaluationOptions&, MathStructure const&, MathStructure*) /root/metric/test/libqalculate/libqalculate/MathStructure-isolatex.cc:2223
    #20 0x55ef7a7a9824 in MathStructure::isolate_x_sub(EvaluationOptions const&, EvaluationOptions&, MathStructure const&, MathStructure*) /root/metric/test/libqalculate/libqalculate/MathStructure-isolatex.cc:669
    #21 0x55ef7a7a76e5 in MathStructure::isolate_x(EvaluationOptions const&, EvaluationOptions const&, MathStructure const&, bool) /root/metric/test/libqalculate/libqalculate/MathStructure-isolatex.cc:6270
    #22 0x55ef7a7ad53e in MathStructure::isolate_x_sub(EvaluationOptions const&, EvaluationOptions&, MathStructure const&, MathStructure*) /root/metric/test/libqalculate/libqalculate/MathStructure-isolatex.cc:2223
    #23 0x55ef7a7a9824 in MathStructure::isolate_x_sub(EvaluationOptions const&, EvaluationOptions&, MathStructure const&, MathStructure*) /root/metric/test/libqalculate/libqalculate/MathStructure-isolatex.cc:669
    #24 0x55ef7a7a76e5 in MathStructure::isolate_x(EvaluationOptions const&, EvaluationOptions const&, MathStructure const&, bool) /root/metric/test/libqalculate/libqalculate/MathStructure-isolatex.cc:6270
    #25 0x55ef7a7ad53e in MathStructure::isolate_x_sub(EvaluationOptions const&, EvaluationOptions&, MathStructure const&, MathStructure*) /root/metric/test/libqalculate/libqalculate/MathStructure-isolatex.cc:2223
    #26 0x55ef7a7a9824 in MathStructure::isolate_x_sub(EvaluationOptions const&, EvaluationOptions&, MathStructure const&, MathStructure*) /root/metric/test/libqalculate/libqalculate/MathStructure-isolatex.cc:669
    #27 0x55ef7a7a76e5 in MathStructure::isolate_x(EvaluationOptions const&, EvaluationOptions const&, MathStructure const&, bool) /root/metric/test/libqalculate/libqalculate/MathStructure-isolatex.cc:6270
    #28 0x55ef7a7ad53e in MathStructure::isolate_x_sub(EvaluationOptions const&, EvaluationOptions&, MathStructure const&, MathStructure*) /root/metric/test/libqalculate/libqalculate/MathStructure-isolatex.cc:2223
    #29 0x55ef7a7a9824 in MathStructure::isolate_x_sub(EvaluationOptions const&, EvaluationOptions&, MathStructure const&, MathStructure*) /root/metric/test/libqalculate/libqalculate/MathStructure-isolatex.cc:669
    #30 0x55ef7a7a76e5 in MathStructure::isolate_x(EvaluationOptions const&, EvaluationOptions const&, MathStructure const&, bool) /root/metric/test/libqalculate/libqalculate/MathStructure-isolatex.cc:6270
    #31 0x55ef7a7ad53e in MathStructure::isolate_x_sub(EvaluationOptions const&, EvaluationOptions&, MathStructure const&, MathStructure*) /root/metric/test/libqalculate/libqalculate/MathStructure-isolatex.cc:2223
    #32 0x55ef7a7a9824 in MathStructure::isolate_x_sub(EvaluationOptions const&, EvaluationOptions&, MathStructure const&, MathStructure*) /root/metric/test/libqalculate/libqalculate/MathStructure-isolatex.cc:669
    #33 0x55ef7a7a76e5 in MathStructure::isolate_x(EvaluationOptions const&, EvaluationOptions const&, MathStructure const&, bool) /root/metric/test/libqalculate/libqalculate/MathStructure-isolatex.cc:6270
    #34 0x55ef7a7ad53e in MathStructure::isolate_x_sub(EvaluationOptions const&, EvaluationOptions&, MathStructure const&, MathStructure*) /root/metric/test/libqalculate/libqalculate/MathStructure-isolatex.cc:2223
    #35 0x55ef7a7a9824 in MathStructure::isolate_x_sub(EvaluationOptions const&, EvaluationOptions&, MathStructure const&, MathStructure*) /root/metric/test/libqalculate/libqalculate/MathStructure-isolatex.cc:669
    #36 0x55ef7a7a76e5 in MathStructure::isolate_x(EvaluationOptions const&, EvaluationOptions const&, MathStructure const&, bool) /root/metric/test/libqalculate/libqalculate/MathStructure-isolatex.cc:6270
    #37 0x55ef7a7ad53e in MathStructure::isolate_x_sub(EvaluationOptions const&, EvaluationOptions&, MathStructure const&, MathStructure*) /root/metric/test/libqalculate/libqalculate/MathStructure-isolatex.cc:2223
    #38 0x55ef7a7a9824 in MathStructure::isolate_x_sub(EvaluationOptions const&, EvaluationOptions&, MathStructure const&, MathStructure*) /root/metric/test/libqalculate/libqalculate/MathStructure-isolatex.cc:669
    #39 0x55ef7a7a76e5 in MathStructure::isolate_x(EvaluationOptions const&, EvaluationOptions const&, MathStructure const&, bool) /root/metric/test/libqalculate/libqalculate/MathStructure-isolatex.cc:6270
    #40 0x55ef7a7ad53e in MathStructure::isolate_x_sub(EvaluationOptions const&, EvaluationOptions&, MathStructure const&, MathStructure*) /root/metric/test/libqalculate/libqalculate/MathStructure-isolatex.cc:2223
    #41 0x55ef7a7a9824 in MathStructure::isolate_x_sub(EvaluationOptions const&, EvaluationOptions&, MathStructure const&, MathStructure*) /root/metric/test/libqalculate/libqalculate/MathStructure-isolatex.cc:669
    #42 0x55ef7a7a76e5 in MathStructure::isolate_x(EvaluationOptions const&, EvaluationOptions const&, MathStructure const&, bool) /root/metric/test/libqalculate/libqalculate/MathStructure-isolatex.cc:6270
    #43 0x55ef7a7ad53e in MathStructure::isolate_x_sub(EvaluationOptions const&, EvaluationOptions&, MathStructure const&, MathStructure*) /root/metric/test/libqalculate/libqalculate/MathStructure-isolatex.cc:2223
    #44 0x55ef7a7a9824 in MathStructure::isolate_x_sub(EvaluationOptions const&, EvaluationOptions&, MathStructure const&, MathStructure*) /root/metric/test/libqalculate/libqalculate/MathStructure-isolatex.cc:669
    #45 0x55ef7a7a76e5 in MathStructure::isolate_x(EvaluationOptions const&, EvaluationOptions const&, MathStructure const&, bool) /root/metric/test/libqalculate/libqalculate/MathStructure-isolatex.cc:6270
    #46 0x55ef7a7ad53e in MathStructure::isolate_x_sub(EvaluationOptions const&, EvaluationOptions&, MathStructure const&, MathStructure*) /root/metric/test/libqalculate/libqalculate/MathStructure-isolatex.cc:2223
    #47 0x55ef7a7a9824 in MathStructure::isolate_x_sub(EvaluationOptions const&, EvaluationOptions&, MathStructure const&, MathStructure*) /root/metric/test/libqalculate/libqalculate/MathStructure-isolatex.cc:669
    #48 0x55ef7a7a76e5 in MathStructure::isolate_x(EvaluationOptions const&, EvaluationOptions const&, MathStructure const&, bool) /root/metric/test/libqalculate/libqalculate/MathStructure-isolatex.cc:6270
    #49 0x55ef7a7ad53e in MathStructure::isolate_x_sub(EvaluationOptions const&, EvaluationOptions&, MathStructure const&, MathStructure*) /root/metric/test/libqalculate/libqalculate/MathStructure-isolatex.cc:2223
    #50 0x55ef7a7a9824 in MathStructure::isolate_x_sub(EvaluationOptions const&, EvaluationOptions&, MathStructure const&, MathStructure*) /root/metric/test/libqalculate/libqalculate/MathStructure-isolatex.cc:669
    #51 0x55ef7a7a76e5 in MathStructure::isolate_x(EvaluationOptions const&, EvaluationOptions const&, MathStructure const&, bool) /root/metric/test/libqalculate/libqalculate/MathStructure-isolatex.cc:6270
    #52 0x55ef7a7ad53e in MathStructure::isolate_x_sub(EvaluationOptions const&, EvaluationOptions&, MathStructure const&, MathStructure*) /root/metric/test/libqalculate/libqalculate/MathStructure-isolatex.cc:2223
    #53 0x55ef7a7a9824 in MathStructure::isolate_x_sub(EvaluationOptions const&, EvaluationOptions&, MathStructure const&, MathStructure*) /root/metric/test/libqalculate/libqalculate/MathStructure-isolatex.cc:669
    #54 0x55ef7a7a76e5 in MathStructure::isolate_x(EvaluationOptions const&, EvaluationOptions const&, MathStructure const&, bool) /root/metric/test/libqalculate/libqalculate/MathStructure-isolatex.cc:6270
    #55 0x55ef7a7ad53e in MathStructure::isolate_x_sub(EvaluationOptions const&, EvaluationOptions&, MathStructure const&, MathStructure*) /root/metric/test/libqalculate/libqalculate/MathStructure-isolatex.cc:2223
    #56 0x55ef7a7a9824 in MathStructure::isolate_x_sub(EvaluationOptions const&, EvaluationOptions&, MathStructure const&, MathStructure*) /root/metric/test/libqalculate/libqalculate/MathStructure-isolatex.cc:669
    #57 0x55ef7a7a76e5 in MathStructure::isolate_x(EvaluationOptions const&, EvaluationOptions const&, MathStructure const&, bool) /root/metric/test/libqalculate/libqalculate/MathStructure-isolatex.cc:6270
    #58 0x55ef7a7ad53e in MathStructure::isolate_x_sub(EvaluationOptions const&, EvaluationOptions&, MathStructure const&, MathStructure*) /root/metric/test/libqalculate/libqalculate/MathStructure-isolatex.cc:2223
    #59 0x55ef7a7a9824 in MathStructure::isolate_x_sub(EvaluationOptions const&, EvaluationOptions&, MathStructure const&, MathStructure*) /root/metric/test/libqalculate/libqalculate/MathStructure-isolatex.cc:669
    #60 0x55ef7a7a76e5 in MathStructure::isolate_x(EvaluationOptions const&, EvaluationOptions const&, MathStructure const&, bool) /root/metric/test/libqalculate/libqalculate/MathStructure-isolatex.cc:6270
    #61 0x55ef7a7ad53e in MathStructure::isolate_x_sub(EvaluationOptions const&, EvaluationOptions&, MathStructure const&, MathStructure*) /root/metric/test/libqalculate/libqalculate/MathStructure-isolatex.cc:2223
    #62 0x55ef7a7a9824 in MathStructure::isolate_x_sub(EvaluationOptions const&, EvaluationOptions&, MathStructure const&, MathStructure*) /root/metric/test/libqalculate/libqalculate/MathStructure-isolatex.cc:669
    #63 0x55ef7a7a76e5 in MathStructure::isolate_x(EvaluationOptions const&, EvaluationOptions const&, MathStructure const&, bool) /root/metric/test/libqalculate/libqalculate/MathStructure-isolatex.cc:6270
    #64 0x55ef7a7ad53e in MathStructure::isolate_x_sub(EvaluationOptions const&, EvaluationOptions&, MathStructure const&, MathStructure*) /root/metric/test/libqalculate/libqalculate/MathStructure-isolatex.cc:2223
    #65 0x55ef7a7a9824 in MathStructure::isolate_x_sub(EvaluationOptions const&, EvaluationOptions&, MathStructure const&, MathStructure*) /root/metric/test/libqalculate/libqalculate/MathStructure-isolatex.cc:669
    #66 0x55ef7a7a76e5 in MathStructure::isolate_x(EvaluationOptions const&, EvaluationOptions const&, MathStructure const&, bool) /root/metric/test/libqalculate/libqalculate/MathStructure-isolatex.cc:6270
    #67 0x55ef7a7ad53e in MathStructure::isolate_x_sub(EvaluationOptions const&, EvaluationOptions&, MathStructure const&, MathStructure*) /root/metric/test/libqalculate/libqalculate/MathStructure-isolatex.cc:2223
    #68 0x55ef7a7a9824 in MathStructure::isolate_x_sub(EvaluationOptions const&, EvaluationOptions&, MathStructure const&, MathStructure*) /root/metric/test/libqalculate/libqalculate/MathStructure-isolatex.cc:669
    #69 0x55ef7a7a76e5 in MathStructure::isolate_x(EvaluationOptions const&, EvaluationOptions const&, MathStructure const&, bool) /root/metric/test/libqalculate/libqalculate/MathStructure-isolatex.cc:6270
    #70 0x55ef7a7ad53e in MathStructure::isolate_x_sub(EvaluationOptions const&, EvaluationOptions&, MathStructure const&, MathStructure*) /root/metric/test/libqalculate/libqalculate/MathStructure-isolatex.cc:2223
    #71 0x55ef7a7a9824 in MathStructure::isolate_x_sub(EvaluationOptions const&, EvaluationOptions&, MathStructure const&, MathStructure*) /root/metric/test/libqalculate/libqalculate/MathStructure-isolatex.cc:669
    #72 0x55ef7a7a76e5 in MathStructure::isolate_x(EvaluationOptions const&, EvaluationOptions const&, MathStructure const&, bool) /root/metric/test/libqalculate/libqalculate/MathStructure-isolatex.cc:6270
    #73 0x55ef7a7ad53e in MathStructure::isolate_x_sub(EvaluationOptions const&, EvaluationOptions&, MathStructure const&, MathStructure*) /root/metric/test/libqalculate/libqalculate/MathStructure-isolatex.cc:2223
    #74 0x55ef7a7a9824 in MathStructure::isolate_x_sub(EvaluationOptions const&, EvaluationOptions&, MathStructure const&, MathStructure*) /root/metric/test/libqalculate/libqalculate/MathStructure-isolatex.cc:669
    #75 0x55ef7a7a76e5 in MathStructure::isolate_x(EvaluationOptions const&, EvaluationOptions const&, MathStructure const&, bool) /root/metric/test/libqalculate/libqalculate/MathStructure-isolatex.cc:6270
    #76 0x55ef7a7ad53e in MathStructure::isolate_x_sub(EvaluationOptions const&, EvaluationOptions&, MathStructure const&, MathStructure*) /root/metric/test/libqalculate/libqalculate/MathStructure-isolatex.cc:2223
    #77 0x55ef7a7a9824 in MathStructure::isolate_x_sub(EvaluationOptions const&, EvaluationOptions&, MathStructure const&, MathStructure*) /root/metric/test/libqalculate/libqalculate/MathStructure-isolatex.cc:669
    #78 0x55ef7a7a76e5 in MathStructure::isolate_x(EvaluationOptions const&, EvaluationOptions const&, MathStructure const&, bool) /root/metric/test/libqalculate/libqalculate/MathStructure-isolatex.cc:6270
    #79 0x55ef7a7ad53e in MathStructure::isolate_x_sub(EvaluationOptions const&, EvaluationOptions&, MathStructure const&, MathStructure*) /root/metric/test/libqalculate/libqalculate/MathStructure-isolatex.cc:2223
    #80 0x55ef7a7a9824 in MathStructure::isolate_x_sub(EvaluationOptions const&, EvaluationOptions&, MathStructure const&, MathStructure*) /root/metric/test/libqalculate/libqalculate/MathStructure-isolatex.cc:669
    #81 0x55ef7a7a76e5 in MathStructure::isolate_x(EvaluationOptions const&, EvaluationOptions const&, MathStructure const&, bool) /root/metric/test/libqalculate/libqalculate/MathStructure-isolatex.cc:6270
    #82 0x55ef7a7ad53e in MathStructure::isolate_x_sub(EvaluationOptions const&, EvaluationOptions&, MathStructure const&, MathStructure*) /root/metric/test/libqalculate/libqalculate/MathStructure-isolatex.cc:2223
    #83 0x55ef7a7a9824 in MathStructure::isolate_x_sub(EvaluationOptions const&, EvaluationOptions&, MathStructure const&, MathStructure*) /root/metric/test/libqalculate/libqalculate/MathStructure-isolatex.cc:669
    #84 0x55ef7a7a76e5 in MathStructure::isolate_x(EvaluationOptions const&, EvaluationOptions const&, MathStructure const&, bool) /root/metric/test/libqalculate/libqalculate/MathStructure-isolatex.cc:6270
    #85 0x55ef7a7ad53e in MathStructure::isolate_x_sub(EvaluationOptions const&, EvaluationOptions&, MathStructure const&, MathStructure*) /root/metric/test/libqalculate/libqalculate/MathStructure-isolatex.cc:2223
    #86 0x55ef7a7a9824 in MathStructure::isolate_x_sub(EvaluationOptions const&, EvaluationOptions&, MathStructure const&, MathStructure*) /root/metric/test/libqalculate/libqalculate/MathStructure-isolatex.cc:669
    #87 0x55ef7a7a76e5 in MathStructure::isolate_x(EvaluationOptions const&, EvaluationOptions const&, MathStructure const&, bool) /root/metric/test/libqalculate/libqalculate/MathStructure-isolatex.cc:6270
    #88 0x55ef7a7ad53e in MathStructure::isolate_x_sub(EvaluationOptions const&, EvaluationOptions&, MathStructure const&, MathStructure*) /root/metric/test/libqalculate/libqalculate/MathStructure-isolatex.cc:2223
    #89 0x55ef7a7a9824 in MathStructure::isolate_x_sub(EvaluationOptions const&, EvaluationOptions&, MathStructure const&, MathStructure*) /root/metric/test/libqalculate/libqalculate/MathStructure-isolatex.cc:669
    #90 0x55ef7a7a76e5 in MathStructure::isolate_x(EvaluationOptions const&, EvaluationOptions const&, MathStructure const&, bool) /root/metric/test/libqalculate/libqalculate/MathStructure-isolatex.cc:6270
    #91 0x55ef7a7ad53e in MathStructure::isolate_x_sub(EvaluationOptions const&, EvaluationOptions&, MathStructure const&, MathStructure*) /root/metric/test/libqalculate/libqalculate/MathStructure-isolatex.cc:2223
    #92 0x55ef7a7a9824 in MathStructure::isolate_x_sub(EvaluationOptions const&, EvaluationOptions&, MathStructure const&, MathStructure*) /root/metric/test/libqalculate/libqalculate/MathStructure-isolatex.cc:669
    #93 0x55ef7a7a76e5 in MathStructure::isolate_x(EvaluationOptions const&, EvaluationOptions const&, MathStructure const&, bool) /root/metric/test/libqalculate/libqalculate/MathStructure-isolatex.cc:6270
    #94 0x55ef7a7ad53e in MathStructure::isolate_x_sub(EvaluationOptions const&, EvaluationOptions&, MathStructure const&, MathStructure*) /root/metric/test/libqalculate/libqalculate/MathStructure-isolatex.cc:2223
    #95 0x55ef7a7a9824 in MathStructure::isolate_x_sub(EvaluationOptions const&, EvaluationOptions&, MathStructure const&, MathStructure*) /root/metric/test/libqalculate/libqalculate/MathStructure-isolatex.cc:669
    #96 0x55ef7a7a76e5 in MathStructure::isolate_x(EvaluationOptions const&, EvaluationOptions const&, MathStructure const&, bool) /root/metric/test/libqalculate/libqalculate/MathStructure-isolatex.cc:6270
    #97 0x55ef7a7ad53e in MathStructure::isolate_x_sub(EvaluationOptions const&, EvaluationOptions&, MathStructure const&, MathStructure*) /root/metric/test/libqalculate/libqalculate/MathStructure-isolatex.cc:2223
    #98 0x55ef7a7a9824 in MathStructure::isolate_x_sub(EvaluationOptions const&, EvaluationOptions&, MathStructure const&, MathStructure*) /root/metric/test/libqalculate/libqalculate/MathStructure-isolatex.cc:669
    #99 0x55ef7a7a76e5 in MathStructure::isolate_x(EvaluationOptions const&, EvaluationOptions const&, MathStructure const&, bool) /root/metric/test/libqalculate/libqalculate/MathStructure-isolatex.cc:6270
    #100 0x55ef7a7ad53e in MathStructure::isolate_x_sub(EvaluationOptions const&, EvaluationOptions&, MathStructure const&, MathStructure*) /root/metric/test/libqalculate/libqalculate/MathStructure-isolatex.cc:2223
    #101 0x55ef7a7a9824 in MathStructure::isolate_x_sub(EvaluationOptions const&, EvaluationOptions&, MathStructure const&, MathStructure*) /root/metric/test/libqalculate/libqalculate/MathStructure-isolatex.cc:669
    #102 0x55ef7a7a76e5 in MathStructure::isolate_x(EvaluationOptions const&, EvaluationOptions const&, MathStructure const&, bool) /root/metric/test/libqalculate/libqalculate/MathStructure-isolatex.cc:6270
    #103 0x55ef7a7ad53e in MathStructure::isolate_x_sub(EvaluationOptions const&, EvaluationOptions&, MathStructure const&, MathStructure*) /root/metric/test/libqalculate/libqalculate/MathStructure-isolatex.cc:2223
    #104 0x55ef7a7a9824 in MathStructure::isolate_x_sub(EvaluationOptions const&, EvaluationOptions&, MathStructure const&, MathStructure*) /root/metric/test/libqalculate/libqalculate/MathStructure-isolatex.cc:669
    #105 0x55ef7a7a76e5 in MathStructure::isolate_x(EvaluationOptions const&, EvaluationOptions const&, MathStructure const&, bool) /root/metric/test/libqalculate/libqalculate/MathStructure-isolatex.cc:6270
    #106 0x55ef7a7ad53e in MathStructure::isolate_x_sub(EvaluationOptions const&, EvaluationOptions&, MathStructure const&, MathStructure*) /root/metric/test/libqalculate/libqalculate/MathStructure-isolatex.cc:2223
    #107 0x55ef7a7a9824 in MathStructure::isolate_x_sub(EvaluationOptions const&, EvaluationOptions&, MathStructure const&, MathStructure*) /root/metric/test/libqalculate/libqalculate/MathStructure-isolatex.cc:669
    #108 0x55ef7a7a76e5 in MathStructure::isolate_x(EvaluationOptions const&, EvaluationOptions const&, MathStructure const&, bool) /root/metric/test/libqalculate/libqalculate/MathStructure-isolatex.cc:6270
    #109 0x55ef7a7ad53e in MathStructure::isolate_x_sub(EvaluationOptions const&, EvaluationOptions&, MathStructure const&, MathStructure*) /root/metric/test/libqalculate/libqalculate/MathStructure-isolatex.cc:2223
    #110 0x55ef7a7a9824 in MathStructure::isolate_x_sub(EvaluationOptions const&, EvaluationOptions&, MathStructure const&, MathStructure*) /root/metric/test/libqalculate/libqalculate/MathStructure-isolatex.cc:669
    #111 0x55ef7a7a76e5 in MathStructure::isolate_x(EvaluationOptions const&, EvaluationOptions const&, MathStructure const&, bool) /root/metric/test/libqalculate/libqalculate/MathStructure-isolatex.cc:6270
    #112 0x55ef7a7ad53e in MathStructure::isolate_x_sub(EvaluationOptions const&, EvaluationOptions&, MathStructure const&, MathStructure*) /root/metric/test/libqalculate/libqalculate/MathStructure-isolatex.cc:2223
    #113 0x55ef7a7a9824 in MathStructure::isolate_x_sub(EvaluationOptions const&, EvaluationOptions&, MathStructure const&, MathStructure*) /root/metric/test/libqalculate/libqalculate/MathStructure-isolatex.cc:669
    #114 0x55ef7a7a76e5 in MathStructure::isolate_x(EvaluationOptions const&, EvaluationOptions const&, MathStructure const&, bool) /root/metric/test/libqalculate/libqalculate/MathStructure-isolatex.cc:6270
    #115 0x55ef7a7ad53e in MathStructure::isolate_x_sub(EvaluationOptions const&, EvaluationOptions&, MathStructure const&, MathStructure*) /root/metric/test/libqalculate/libqalculate/MathStructure-isolatex.cc:2223
    #116 0x55ef7a7a9824 in MathStructure::isolate_x_sub(EvaluationOptions const&, EvaluationOptions&, MathStructure const&, MathStructure*) /root/metric/test/libqalculate/libqalculate/MathStructure-isolatex.cc:669
    #117 0x55ef7a7a76e5 in MathStructure::isolate_x(EvaluationOptions const&, EvaluationOptions const&, MathStructure const&, bool) /root/metric/test/libqalculate/libqalculate/MathStructure-isolatex.cc:6270
    #118 0x55ef7a7ad53e in MathStructure::isolate_x_sub(EvaluationOptions const&, EvaluationOptions&, MathStructure const&, MathStructure*) /root/metric/test/libqalculate/libqalculate/MathStructure-isolatex.cc:2223
    #119 0x55ef7a7a9824 in MathStructure::isolate_x_sub(EvaluationOptions const&, EvaluationOptions&, MathStructure const&, MathStructure*) /root/metric/test/libqalculate/libqalculate/MathStructure-isolatex.cc:669
    #120 0x55ef7a7a76e5 in MathStructure::isolate_x(EvaluationOptions const&, EvaluationOptions const&, MathStructure const&, bool) /root/metric/test/libqalculate/libqalculate/MathStructure-isolatex.cc:6270
    #121 0x55ef7a7ad53e in MathStructure::isolate_x_sub(EvaluationOptions const&, EvaluationOptions&, MathStructure const&, MathStructure*) /root/metric/test/libqalculate/libqalculate/MathStructure-isolatex.cc:2223
    #122 0x55ef7a7a9824 in MathStructure::isolate_x_sub(EvaluationOptions const&, EvaluationOptions&, MathStructure const&, MathStructure*) /root/metric/test/libqalculate/libqalculate/MathStructure-isolatex.cc:669
    #123 0x55ef7a7a76e5 in MathStructure::isolate_x(EvaluationOptions const&, EvaluationOptions const&, MathStructure const&, bool) /root/metric/test/libqalculate/libqalculate/MathStructure-isolatex.cc:6270
    #124 0x55ef7a7ad53e in MathStructure::isolate_x_sub(EvaluationOptions const&, EvaluationOptions&, MathStructure const&, MathStructure*) /root/metric/test/libqalculate/libqalculate/MathStructure-isolatex.cc:2223
    #125 0x55ef7a7a9824 in MathStructure::isolate_x_sub(EvaluationOptions const&, EvaluationOptions&, MathStructure const&, MathStructure*) /root/metric/test/libqalculate/libqalculate/MathStructure-isolatex.cc:669
    #126 0x55ef7a7a76e5 in MathStructure::isolate_x(EvaluationOptions const&, EvaluationOptions const&, MathStructure const&, bool) /root/metric/test/libqalculate/libqalculate/MathStructure-isolatex.cc:6270
    #127 0x55ef7a7ad53e in MathStructure::isolate_x_sub(EvaluationOptions const&, EvaluationOptions&, MathStructure const&, MathStructure*) /root/metric/test/libqalculate/libqalculate/MathStructure-isolatex.cc:2223
    #128 0x55ef7a7a9824 in MathStructure::isolate_x_sub(EvaluationOptions const&, EvaluationOptions&, MathStructure const&, MathStructure*) /root/metric/test/libqalculate/libqalculate/MathStructure-isolatex.cc:669
    #129 0x55ef7a7a76e5 in MathStructure::isolate_x(EvaluationOptions const&, EvaluationOptions const&, MathStructure const&, bool) /root/metric/test/libqalculate/libqalculate/MathStructure-isolatex.cc:6270
    #130 0x55ef7a7ad53e in MathStructure::isolate_x_sub(EvaluationOptions const&, EvaluationOptions&, MathStructure const&, MathStructure*) /root/metric/test/libqalculate/libqalculate/MathStructure-isolatex.cc:2223
    #131 0x55ef7a7a9824 in MathStructure::isolate_x_sub(EvaluationOptions const&, EvaluationOptions&, MathStructure const&, MathStructure*) /root/metric/test/libqalculate/libqalculate/MathStructure-isolatex.cc:669
    #132 0x55ef7a7a76e5 in MathStructure::isolate_x(EvaluationOptions const&, EvaluationOptions const&, MathStructure const&, bool) /root/metric/test/libqalculate/libqalculate/MathStructure-isolatex.cc:6270
    #133 0x55ef7a7ad53e in MathStructure::isolate_x_sub(EvaluationOptions const&, EvaluationOptions&, MathStructure const&, MathStructure*) /root/metric/test/libqalculate/libqalculate/MathStructure-isolatex.cc:2223
    #134 0x55ef7a7a9824 in MathStructure::isolate_x_sub(EvaluationOptions const&, EvaluationOptions&, MathStructure const&, MathStructure*) /root/metric/test/libqalculate/libqalculate/MathStructure-isolatex.cc:669
    #135 0x55ef7a7a76e5 in MathStructure::isolate_x(EvaluationOptions const&, EvaluationOptions const&, MathStructure const&, bool) /root/metric/test/libqalculate/libqalculate/MathStructure-isolatex.cc:6270
    #136 0x55ef7a7ad53e in MathStructure::isolate_x_sub(EvaluationOptions const&, EvaluationOptions&, MathStructure const&, MathStructure*) /root/metric/test/libqalculate/libqalculate/MathStructure-isolatex.cc:2223
    #137 0x55ef7a7a9824 in MathStructure::isolate_x_sub(EvaluationOptions const&, EvaluationOptions&, MathStructure const&, MathStructure*) /root/metric/test/libqalculate/libqalculate/MathStructure-isolatex.cc:669
    #138 0x55ef7a7a76e5 in MathStructure::isolate_x(EvaluationOptions const&, EvaluationOptions const&, MathStructure const&, bool) /root/metric/test/libqalculate/libqalculate/MathStructure-isolatex.cc:6270
    #139 0x55ef7a7ad53e in MathStructure::isolate_x_sub(EvaluationOptions const&, EvaluationOptions&, MathStructure const&, MathStructure*) /root/metric/test/libqalculate/libqalculate/MathStructure-isolatex.cc:2223
    #140 0x55ef7a7a9824 in MathStructure::isolate_x_sub(EvaluationOptions const&, EvaluationOptions&, MathStructure const&, MathStructure*) /root/metric/test/libqalculate/libqalculate/MathStructure-isolatex.cc:669
    #141 0x55ef7a7a76e5 in MathStructure::isolate_x(EvaluationOptions const&, EvaluationOptions const&, MathStructure const&, bool) /root/metric/test/libqalculate/libqalculate/MathStructure-isolatex.cc:6270
    #142 0x55ef7a7ad53e in MathStructure::isolate_x_sub(EvaluationOptions const&, EvaluationOptions&, MathStructure const&, MathStructure*) /root/metric/test/libqalculate/libqalculate/MathStructure-isolatex.cc:2223
    #143 0x55ef7a7a9824 in MathStructure::isolate_x_sub(EvaluationOptions const&, EvaluationOptions&, MathStructure const&, MathStructure*) /root/metric/test/libqalculate/libqalculate/MathStructure-isolatex.cc:669
    #144 0x55ef7a7a76e5 in MathStructure::isolate_x(EvaluationOptions const&, EvaluationOptions const&, MathStructure const&, bool) /root/metric/test/libqalculate/libqalculate/MathStructure-isolatex.cc:6270
    #145 0x55ef7a7ad53e in MathStructure::isolate_x_sub(EvaluationOptions const&, EvaluationOptions&, MathStructure const&, MathStructure*) /root/metric/test/libqalculate/libqalculate/MathStructure-isolatex.cc:2223
    #146 0x55ef7a7a9824 in MathStructure::isolate_x_sub(EvaluationOptions const&, EvaluationOptions&, MathStructure const&, MathStructure*) /root/metric/test/libqalculate/libqalculate/MathStructure-isolatex.cc:669
    #147 0x55ef7a7a76e5 in MathStructure::isolate_x(EvaluationOptions const&, EvaluationOptions const&, MathStructure const&, bool) /root/metric/test/libqalculate/libqalculate/MathStructure-isolatex.cc:6270
    #148 0x55ef7a7ad53e in MathStructure::isolate_x_sub(EvaluationOptions const&, EvaluationOptions&, MathStructure const&, MathStructure*) /root/metric/test/libqalculate/libqalculate/MathStructure-isolatex.cc:2223
    #149 0x55ef7a7a9824 in MathStructure::isolate_x_sub(EvaluationOptions const&, EvaluationOptions&, MathStructure const&, MathStructure*) /root/metric/test/libqalculate/libqalculate/MathStructure-isolatex.cc:669
    #150 0x55ef7a7a76e5 in MathStructure::isolate_x(EvaluationOptions const&, EvaluationOptions const&, MathStructure const&, bool) /root/metric/test/libqalculate/libqalculate/MathStructure-isolatex.cc:6270
    #151 0x55ef7a7ad53e in MathStructure::isolate_x_sub(EvaluationOptions const&, EvaluationOptions&, MathStructure const&, MathStructure*) /root/metric/test/libqalculate/libqalculate/MathStructure-isolatex.cc:2223
    #152 0x55ef7a7a9824 in MathStructure::isolate_x_sub(EvaluationOptions const&, EvaluationOptions&, MathStructure const&, MathStructure*) /root/metric/test/libqalculate/libqalculate/MathStructure-isolatex.cc:669
    #153 0x55ef7a7a76e5 in MathStructure::isolate_x(EvaluationOptions const&, EvaluationOptions const&, MathStructure const&, bool) /root/metric/test/libqalculate/libqalculate/MathStructure-isolatex.cc:6270
    #154 0x55ef7a7ad53e in MathStructure::isolate_x_sub(EvaluationOptions const&, EvaluationOptions&, MathStructure const&, MathStructure*) /root/metric/test/libqalculate/libqalculate/MathStructure-isolatex.cc:2223
    #155 0x55ef7a7a9824 in MathStructure::isolate_x_sub(EvaluationOptions const&, EvaluationOptions&, MathStructure const&, MathStructure*) /root/metric/test/libqalculate/libqalculate/MathStructure-isolatex.cc:669
    #156 0x55ef7a7a76e5 in MathStructure::isolate_x(EvaluationOptions const&, EvaluationOptions const&, MathStructure const&, bool) /root/metric/test/libqalculate/libqalculate/MathStructure-isolatex.cc:6270
    #157 0x55ef7a7ad53e in MathStructure::isolate_x_sub(EvaluationOptions const&, EvaluationOptions&, MathStructure const&, MathStructure*) /root/metric/test/libqalculate/libqalculate/MathStructure-isolatex.cc:2223
    #158 0x55ef7a7a9824 in MathStructure::isolate_x_sub(EvaluationOptions const&, EvaluationOptions&, MathStructure const&, MathStructure*) /root/metric/test/libqalculate/libqalculate/MathStructure-isolatex.cc:669
    #159 0x55ef7a7a76e5 in MathStructure::isolate_x(EvaluationOptions const&, EvaluationOptions const&, MathStructure const&, bool) /root/metric/test/libqalculate/libqalculate/MathStructure-isolatex.cc:6270
    #160 0x55ef7a7ad53e in MathStructure::isolate_x_sub(EvaluationOptions const&, EvaluationOptions&, MathStructure const&, MathStructure*) /root/metric/test/libqalculate/libqalculate/MathStructure-isolatex.cc:2223
    #161 0x55ef7a7a9824 in MathStructure::isolate_x_sub(EvaluationOptions const&, EvaluationOptions&, MathStructure const&, MathStructure*) /root/metric/test/libqalculate/libqalculate/MathStructure-isolatex.cc:669
    #162 0x55ef7a7a76e5 in MathStructure::isolate_x(EvaluationOptions const&, EvaluationOptions const&, MathStructure const&, bool) /root/metric/test/libqalculate/libqalculate/MathStructure-isolatex.cc:6270
    #163 0x55ef7a7ad53e in MathStructure::isolate_x_sub(EvaluationOptions const&, EvaluationOptions&, MathStructure const&, MathStructure*) /root/metric/test/libqalculate/libqalculate/MathStructure-isolatex.cc:2223
    #164 0x55ef7a7a9824 in MathStructure::isolate_x_sub(EvaluationOptions const&, EvaluationOptions&, MathStructure const&, MathStructure*) /root/metric/test/libqalculate/libqalculate/MathStructure-isolatex.cc:669
    #165 0x55ef7a7a76e5 in MathStructure::isolate_x(EvaluationOptions const&, EvaluationOptions const&, MathStructure const&, bool) /root/metric/test/libqalculate/libqalculate/MathStructure-isolatex.cc:6270
    #166 0x55ef7a7ad53e in MathStructure::isolate_x_sub(EvaluationOptions const&, EvaluationOptions&, MathStructure const&, MathStructure*) /root/metric/test/libqalculate/libqalculate/MathStructure-isolatex.cc:2223
    #167 0x55ef7a7a9824 in MathStructure::isolate_x_sub(EvaluationOptions const&, EvaluationOptions&, MathStructure const&, MathStructure*) /root/metric/test/libqalculate/libqalculate/MathStructure-isolatex.cc:669
    #168 0x55ef7a7a76e5 in MathStructure::isolate_x(EvaluationOptions const&, EvaluationOptions const&, MathStructure const&, bool) /root/metric/test/libqalculate/libqalculate/MathStructure-isolatex.cc:6270
    #169 0x55ef7a7ad53e in MathStructure::isolate_x_sub(EvaluationOptions const&, EvaluationOptions&, MathStructure const&, MathStructure*) /root/metric/test/libqalculate/libqalculate/MathStructure-isolatex.cc:2223
    #170 0x55ef7a7a9824 in MathStructure::isolate_x_sub(EvaluationOptions const&, EvaluationOptions&, MathStructure const&, MathStructure*) /root/metric/test/libqalculate/libqalculate/MathStructure-isolatex.cc:669
    #171 0x55ef7a7a76e5 in MathStructure::isolate_x(EvaluationOptions const&, EvaluationOptions const&, MathStructure const&, bool) /root/metric/test/libqalculate/libqalculate/MathStructure-isolatex.cc:6270
    #172 0x55ef7a7ad53e in MathStructure::isolate_x_sub(EvaluationOptions const&, EvaluationOptions&, MathStructure const&, MathStructure*) /root/metric/test/libqalculate/libqalculate/MathStructure-isolatex.cc:2223
    #173 0x55ef7a7a9824 in MathStructure::isolate_x_sub(EvaluationOptions const&, EvaluationOptions&, MathStructure const&, MathStructure*) /root/metric/test/libqalculate/libqalculate/MathStructure-isolatex.cc:669
    #174 0x55ef7a7a76e5 in MathStructure::isolate_x(EvaluationOptions const&, EvaluationOptions const&, MathStructure const&, bool) /root/metric/test/libqalculate/libqalculate/MathStructure-isolatex.cc:6270
    #175 0x55ef7a7ad53e in MathStructure::isolate_x_sub(EvaluationOptions const&, EvaluationOptions&, MathStructure const&, MathStructure*) /root/metric/test/libqalculate/libqalculate/MathStructure-isolatex.cc:2223
    #176 0x55ef7a7a9824 in MathStructure::isolate_x_sub(EvaluationOptions const&, EvaluationOptions&, MathStructure const&, MathStructure*) /root/metric/test/libqalculate/libqalculate/MathStructure-isolatex.cc:669
    #177 0x55ef7a7a76e5 in MathStructure::isolate_x(EvaluationOptions const&, EvaluationOptions const&, MathStructure const&, bool) /root/metric/test/libqalculate/libqalculate/MathStructure-isolatex.cc:6270
    #178 0x55ef7a7ad53e in MathStructure::isolate_x_sub(EvaluationOptions const&, EvaluationOptions&, MathStructure const&, MathStructure*) /root/metric/test/libqalculate/libqalculate/MathStructure-isolatex.cc:2223
    #179 0x55ef7a7a9824 in MathStructure::isolate_x_sub(EvaluationOptions const&, EvaluationOptions&, MathStructure const&, MathStructure*) /root/metric/test/libqalculate/libqalculate/MathStructure-isolatex.cc:669
    #180 0x55ef7a7a76e5 in MathStructure::isolate_x(EvaluationOptions const&, EvaluationOptions const&, MathStructure const&, bool) /root/metric/test/libqalculate/libqalculate/MathStructure-isolatex.cc:6270
    #181 0x55ef7a7ad53e in MathStructure::isolate_x_sub(EvaluationOptions const&, EvaluationOptions&, MathStructure const&, MathStructure*) /root/metric/test/libqalculate/libqalculate/MathStructure-isolatex.cc:2223
    #182 0x55ef7a7a9824 in MathStructure::isolate_x_sub(EvaluationOptions const&, EvaluationOptions&, MathStructure const&, MathStructure*) /root/metric/test/libqalculate/libqalculate/MathStructure-isolatex.cc:669
    #183 0x55ef7a7a76e5 in MathStructure::isolate_x(EvaluationOptions const&, EvaluationOptions const&, MathStructure const&, bool) /root/metric/test/libqalculate/libqalculate/MathStructure-isolatex.cc:6270
    #184 0x55ef7a7ad53e in MathStructure::isolate_x_sub(EvaluationOptions const&, EvaluationOptions&, MathStructure const&, MathStructure*) /root/metric/test/libqalculate/libqalculate/MathStructure-isolatex.cc:2223
    #185 0x55ef7a7a9824 in MathStructure::isolate_x_sub(EvaluationOptions const&, EvaluationOptions&, MathStructure const&, MathStructure*) /root/metric/test/libqalculate/libqalculate/MathStructure-isolatex.cc:669
    #186 0x55ef7a7a76e5 in MathStructure::isolate_x(EvaluationOptions const&, EvaluationOptions const&, MathStructure const&, bool) /root/metric/test/libqalculate/libqalculate/MathStructure-isolatex.cc:6270
    #187 0x55ef7a7ad53e in MathStructure::isolate_x_sub(EvaluationOptions const&, EvaluationOptions&, MathStructure const&, MathStructure*) /root/metric/test/libqalculate/libqalculate/MathStructure-isolatex.cc:2223
    #188 0x55ef7a7a9824 in MathStructure::isolate_x_sub(EvaluationOptions const&, EvaluationOptions&, MathStructure const&, MathStructure*) /root/metric/test/libqalculate/libqalculate/MathStructure-isolatex.cc:669
    #189 0x55ef7a7a76e5 in MathStructure::isolate_x(EvaluationOptions const&, EvaluationOptions const&, MathStructure const&, bool) /root/metric/test/libqalculate/libqalculate/MathStructure-isolatex.cc:6270
    #190 0x55ef7a7ad53e in MathStructure::isolate_x_sub(EvaluationOptions const&, EvaluationOptions&, MathStructure const&, MathStructure*) /root/metric/test/libqalculate/libqalculate/MathStructure-isolatex.cc:2223
    #191 0x55ef7a7a9824 in MathStructure::isolate_x_sub(EvaluationOptions const&, EvaluationOptions&, MathStructure const&, MathStructure*) /root/metric/test/libqalculate/libqalculate/MathStructure-isolatex.cc:669
    #192 0x55ef7a7a76e5 in MathStructure::isolate_x(EvaluationOptions const&, EvaluationOptions const&, MathStructure const&, bool) /root/metric/test/libqalculate/libqalculate/MathStructure-isolatex.cc:6270
    #193 0x55ef7a7ad53e in MathStructure::isolate_x_sub(EvaluationOptions const&, EvaluationOptions&, MathStructure const&, MathStructure*) /root/metric/test/libqalculate/libqalculate/MathStructure-isolatex.cc:2223
    #194 0x55ef7a7a9824 in MathStructure::isolate_x_sub(EvaluationOptions const&, EvaluationOptions&, MathStructure const&, MathStructure*) /root/metric/test/libqalculate/libqalculate/MathStructure-isolatex.cc:669
    #195 0x55ef7a7a76e5 in MathStructure::isolate_x(EvaluationOptions const&, EvaluationOptions const&, MathStructure const&, bool) /root/metric/test/libqalculate/libqalculate/MathStructure-isolatex.cc:6270
    #196 0x55ef7a7ad53e in MathStructure::isolate_x_sub(EvaluationOptions const&, EvaluationOptions&, MathStructure const&, MathStructure*) /root/metric/test/libqalculate/libqalculate/MathStructure-isolatex.cc:2223
    #197 0x55ef7a7a9824 in MathStructure::isolate_x_sub(EvaluationOptions const&, EvaluationOptions&, MathStructure const&, MathStructure*) /root/metric/test/libqalculate/libqalculate/MathStructure-isolatex.cc:669
    #198 0x55ef7a7a76e5 in MathStructure::isolate_x(EvaluationOptions const&, EvaluationOptions const&, MathStructure const&, bool) /root/metric/test/libqalculate/libqalculate/MathStructure-isolatex.cc:6270
    #199 0x55ef7a7ad53e in MathStructure::isolate_x_sub(EvaluationOptions const&, EvaluationOptions&, MathStructure const&, MathStructure*) /root/metric/test/libqalculate/libqalculate/MathStructure-isolatex.cc:2223
    #200 0x55ef7a7a9824 in MathStructure::isolate_x_sub(EvaluationOptions const&, EvaluationOptions&, MathStructure const&, MathStructure*) /root/metric/test/libqalculate/libqalculate/MathStructure-isolatex.cc:669
    #201 0x55ef7a7a76e5 in MathStructure::isolate_x(EvaluationOptions const&, EvaluationOptions const&, MathStructure const&, bool) /root/metric/test/libqalculate/libqalculate/MathStructure-isolatex.cc:6270
    #202 0x55ef7a7ad53e in MathStructure::isolate_x_sub(EvaluationOptions const&, EvaluationOptions&, MathStructure const&, MathStructure*) /root/metric/test/libqalculate/libqalculate/MathStructure-isolatex.cc:2223
    #203 0x55ef7a7a9824 in MathStructure::isolate_x_sub(EvaluationOptions const&, EvaluationOptions&, MathStructure const&, MathStructure*) /root/metric/test/libqalculate/libqalculate/MathStructure-isolatex.cc:669
    #204 0x55ef7a7a76e5 in MathStructure::isolate_x(EvaluationOptions const&, EvaluationOptions const&, MathStructure const&, bool) /root/metric/test/libqalculate/libqalculate/MathStructure-isolatex.cc:6270
    #205 0x55ef7a7ad53e in MathStructure::isolate_x_sub(EvaluationOptions const&, EvaluationOptions&, MathStructure const&, MathStructure*) /root/metric/test/libqalculate/libqalculate/MathStructure-isolatex.cc:2223
    #206 0x55ef7a7a9824 in MathStructure::isolate_x_sub(EvaluationOptions const&, EvaluationOptions&, MathStructure const&, MathStructure*) /root/metric/test/libqalculate/libqalculate/MathStructure-isolatex.cc:669
    #207 0x55ef7a7a76e5 in MathStructure::isolate_x(EvaluationOptions const&, EvaluationOptions const&, MathStructure const&, bool) /root/metric/test/libqalculate/libqalculate/MathStructure-isolatex.cc:6270
    #208 0x55ef7a7ad53e in MathStructure::isolate_x_sub(EvaluationOptions const&, EvaluationOptions&, MathStructure const&, MathStructure*) /root/metric/test/libqalculate/libqalculate/MathStructure-isolatex.cc:2223
    #209 0x55ef7a7a9824 in MathStructure::isolate_x_sub(EvaluationOptions const&, EvaluationOptions&, MathStructure const&, MathStructure*) /root/metric/test/libqalculate/libqalculate/MathStructure-isolatex.cc:669
    #210 0x55ef7a7a76e5 in MathStructure::isolate_x(EvaluationOptions const&, EvaluationOptions const&, MathStructure const&, bool) /root/metric/test/libqalculate/libqalculate/MathStructure-isolatex.cc:6270
    #211 0x55ef7a7ad53e in MathStructure::isolate_x_sub(EvaluationOptions const&, EvaluationOptions&, MathStructure const&, MathStructure*) /root/metric/test/libqalculate/libqalculate/MathStructure-isolatex.cc:2223
    #212 0x55ef7a7a9824 in MathStructure::isolate_x_sub(EvaluationOptions const&, EvaluationOptions&, MathStructure const&, MathStructure*) /root/metric/test/libqalculate/libqalculate/MathStructure-isolatex.cc:669
    #213 0x55ef7a7a76e5 in MathStructure::isolate_x(EvaluationOptions const&, EvaluationOptions const&, MathStructure const&, bool) /root/metric/test/libqalculate/libqalculate/MathStructure-isolatex.cc:6270
    #214 0x55ef7a7ad53e in MathStructure::isolate_x_sub(EvaluationOptions const&, EvaluationOptions&, MathStructure const&, MathStructure*) /root/metric/test/libqalculate/libqalculate/MathStructure-isolatex.cc:2223
    #215 0x55ef7a7a9824 in MathStructure::isolate_x_sub(EvaluationOptions const&, EvaluationOptions&, MathStructure const&, MathStructure*) /root/metric/test/libqalculate/libqalculate/MathStructure-isolatex.cc:669
    #216 0x55ef7a7a76e5 in MathStructure::isolate_x(EvaluationOptions const&, EvaluationOptions const&, MathStructure const&, bool) /root/metric/test/libqalculate/libqalculate/MathStructure-isolatex.cc:6270
    #217 0x55ef7a7ad53e in MathStructure::isolate_x_sub(EvaluationOptions const&, EvaluationOptions&, MathStructure const&, MathStructure*) /root/metric/test/libqalculate/libqalculate/MathStructure-isolatex.cc:2223
    #218 0x55ef7a7a9824 in MathStructure::isolate_x_sub(EvaluationOptions const&, EvaluationOptions&, MathStructure const&, MathStructure*) /root/metric/test/libqalculate/libqalculate/MathStructure-isolatex.cc:669
    #219 0x55ef7a7a76e5 in MathStructure::isolate_x(EvaluationOptions const&, EvaluationOptions const&, MathStructure const&, bool) /root/metric/test/libqalculate/libqalculate/MathStructure-isolatex.cc:6270
    #220 0x55ef7a7ad53e in MathStructure::isolate_x_sub(EvaluationOptions const&, EvaluationOptions&, MathStructure const&, MathStructure*) /root/metric/test/libqalculate/libqalculate/MathStructure-isolatex.cc:2223
    #221 0x55ef7a7a9824 in MathStructure::isolate_x_sub(EvaluationOptions const&, EvaluationOptions&, MathStructure const&, MathStructure*) /root/metric/test/libqalculate/libqalculate/MathStructure-isolatex.cc:669
    #222 0x55ef7a7a76e5 in MathStructure::isolate_x(EvaluationOptions const&, EvaluationOptions const&, MathStructure const&, bool) /root/metric/test/libqalculate/libqalculate/MathStructure-isolatex.cc:6270
    #223 0x55ef7a7ad53e in MathStructure::isolate_x_sub(EvaluationOptions const&, EvaluationOptions&, MathStructure const&, MathStructure*) /root/metric/test/libqalculate/libqalculate/MathStructure-isolatex.cc:2223
    #224 0x55ef7a7a9824 in MathStructure::isolate_x_sub(EvaluationOptions const&, EvaluationOptions&, MathStructure const&, MathStructure*) /root/metric/test/libqalculate/libqalculate/MathStructure-isolatex.cc:669
    #225 0x55ef7a7a76e5 in MathStructure::isolate_x(EvaluationOptions const&, EvaluationOptions const&, MathStructure const&, bool) /root/metric/test/libqalculate/libqalculate/MathStructure-isolatex.cc:6270
    #226 0x55ef7a7ad53e in MathStructure::isolate_x_sub(EvaluationOptions const&, EvaluationOptions&, MathStructure const&, MathStructure*) /root/metric/test/libqalculate/libqalculate/MathStructure-isolatex.cc:2223
    #227 0x55ef7a7a9824 in MathStructure::isolate_x_sub(EvaluationOptions const&, EvaluationOptions&, MathStructure const&, MathStructure*) /root/metric/test/libqalculate/libqalculate/MathStructure-isolatex.cc:669
    #228 0x55ef7a7a76e5 in MathStructure::isolate_x(EvaluationOptions const&, EvaluationOptions const&, MathStructure const&, bool) /root/metric/test/libqalculate/libqalculate/MathStructure-isolatex.cc:6270
    #229 0x55ef7a7ad53e in MathStructure::isolate_x_sub(EvaluationOptions const&, EvaluationOptions&, MathStructure const&, MathStructure*) /root/metric/test/libqalculate/libqalculate/MathStructure-isolatex.cc:2223
    #230 0x55ef7a7a9824 in MathStructure::isolate_x_sub(EvaluationOptions const&, EvaluationOptions&, MathStructure const&, MathStructure*) /root/metric/test/libqalculate/libqalculate/MathStructure-isolatex.cc:669
    #231 0x55ef7a7a76e5 in MathStructure::isolate_x(EvaluationOptions const&, EvaluationOptions const&, MathStructure const&, bool) /root/metric/test/libqalculate/libqalculate/MathStructure-isolatex.cc:6270
    #232 0x55ef7a7ad53e in MathStructure::isolate_x_sub(EvaluationOptions const&, EvaluationOptions&, MathStructure const&, MathStructure*) /root/metric/test/libqalculate/libqalculate/MathStructure-isolatex.cc:2223
    #233 0x55ef7a7a9824 in MathStructure::isolate_x_sub(EvaluationOptions const&, EvaluationOptions&, MathStructure const&, MathStructure*) /root/metric/test/libqalculate/libqalculate/MathStructure-isolatex.cc:669
    #234 0x55ef7a7a76e5 in MathStructure::isolate_x(EvaluationOptions const&, EvaluationOptions const&, MathStructure const&, bool) /root/metric/test/libqalculate/libqalculate/MathStructure-isolatex.cc:6270
    #235 0x55ef7a7ad53e in MathStructure::isolate_x_sub(EvaluationOptions const&, EvaluationOptions&, MathStructure const&, MathStructure*) /root/metric/test/libqalculate/libqalculate/MathStructure-isolatex.cc:2223
    #236 0x55ef7a7a9824 in MathStructure::isolate_x_sub(EvaluationOptions const&, EvaluationOptions&, MathStructure const&, MathStructure*) /root/metric/test/libqalculate/libqalculate/MathStructure-isolatex.cc:669
    #237 0x55ef7a7a76e5 in MathStructure::isolate_x(EvaluationOptions const&, EvaluationOptions const&, MathStructure const&, bool) /root/metric/test/libqalculate/libqalculate/MathStructure-isolatex.cc:6270
    #238 0x55ef7a7ad53e in MathStructure::isolate_x_sub(EvaluationOptions const&, EvaluationOptions&, MathStructure const&, MathStructure*) /root/metric/test/libqalculate/libqalculate/MathStructure-isolatex.cc:2223
    #239 0x55ef7a7a9824 in MathStructure::isolate_x_sub(EvaluationOptions const&, EvaluationOptions&, MathStructure const&, MathStructure*) /root/metric/test/libqalculate/libqalculate/MathStructure-isolatex.cc:669
    #240 0x55ef7a7a76e5 in MathStructure::isolate_x(EvaluationOptions const&, EvaluationOptions const&, MathStructure const&, bool) /root/metric/test/libqalculate/libqalculate/MathStructure-isolatex.cc:6270
    #241 0x55ef7a7ad53e in MathStructure::isolate_x_sub(EvaluationOptions const&, EvaluationOptions&, MathStructure const&, MathStructure*) /root/metric/test/libqalculate/libqalculate/MathStructure-isolatex.cc:2223
    #242 0x55ef7a7a9824 in MathStructure::isolate_x_sub(EvaluationOptions const&, EvaluationOptions&, MathStructure const&, MathStructure*) /root/metric/test/libqalculate/libqalculate/MathStructure-isolatex.cc:669
    #243 0x55ef7a7a76e5 in MathStructure::isolate_x(EvaluationOptions const&, EvaluationOptions const&, MathStructure const&, bool) /root/metric/test/libqalculate/libqalculate/MathStructure-isolatex.cc:6270
    #244 0x55ef7a7ad53e in MathStructure::isolate_x_sub(EvaluationOptions const&, EvaluationOptions&, MathStructure const&, MathStructure*) /root/metric/test/libqalculate/libqalculate/MathStructure-isolatex.cc:2223
    #245 0x55ef7a7a9824 in MathStructure::isolate_x_sub(EvaluationOptions const&, EvaluationOptions&, MathStructure const&, MathStructure*) /root/metric/test/libqalculate/libqalculate/MathStructure-isolatex.cc:669
    #246 0x55ef7a7a76e5 in MathStructure::isolate_x(EvaluationOptions const&, EvaluationOptions const&, MathStructure const&, bool) /root/metric/test/libqalculate/libqalculate/MathStructure-isolatex.cc:6270
    #247 0x55ef7a7ad53e in MathStructure::isolate_x_sub(EvaluationOptions const&, EvaluationOptions&, MathStructure const&, MathStructure*) /root/metric/test/libqalculate/libqalculate/MathStructure-isolatex.cc:2223
    #248 0x55ef7a7a9824 in MathStructure::isolate_x_sub(EvaluationOptions const&, EvaluationOptions&, MathStructure const&, MathStructure*) /root/metric/test/libqalculate/libqalculate/MathStructure-isolatex.cc:669
    #249 0x55ef7a7a76e5 in MathStructure::isolate_x(EvaluationOptions const&, EvaluationOptions const&, MathStructure const&, bool) /root/metric/test/libqalculate/libqalculate/MathStructure-isolatex.cc:6270
    #250 0x55ef7a7ad53e in MathStructure::isolate_x_sub(EvaluationOptions const&, EvaluationOptions&, MathStructure const&, MathStructure*) /root/metric/test/libqalculate/libqalculate/MathStructure-isolatex.cc:2223
    #251 0x55ef7a7a9824 in MathStructure::isolate_x_sub(EvaluationOptions const&, EvaluationOptions&, MathStructure const&, MathStructure*) /root/metric/test/libqalculate/libqalculate/MathStructure-isolatex.cc:669

AddressSanitizer can not provide additional info.
SUMMARY: AddressSanitizer: SEGV ../../../../src/libsanitizer/sanitizer_common/sanitizer_common_interceptors.inc:860 in MemcmpInterceptorCommon(void*, int (*)(void const*, void const*, unsigned long), void const*, void const*, unsigned long)
Thread T1 created by T0 here:
    #0 0x7f834dc58685 in __interceptor_pthread_create ../../../../src/libsanitizer/asan/asan_interceptors.cpp:216
    #1 0x55ef7a68a19a in Thread::start() /root/metric/test/libqalculate/libqalculate/util.cc:1127

==3430510==ABORTING

Poc

Poc file is poc.zip

hanna-kn commented 3 months ago

I can confirm the segfault. Memory corruption seem to occur, but it is very difficult to pinpoint where. The expression results in quite long and convoluted calculations.

Simplified version of the offending expression: 1/(1/(x² × 'a' × 2) + 1/y) − 1/(1/z + 1/2) = 'b' × 'c'.

hanna-kn commented 3 months ago

Further investigation indicates that the segfault is caused by stack overflow when a function is called recursively, seemingly without any end, when trying to solve 0(+infinity) + (-infinity) * 0 + 0 * sqrt((+infinity) + (-infinity)'a') + 0 * sqrt((+infinity) + (-infinity)'a') != 0.

hanna-kn commented 3 months ago

I have now made three different changes which each separately fix the segfault (the most general solution uses a recursion counter in the offending function to avoid infinite loops and stack overflow).