Known Problems and Solutions - secondo-database/secondo GitHub Wiki

An operation in SECONDO is slow. How can I investigate this?

You can use a profiler like callgrind to investigate the problem.

In one shell, execute watch "callgrind_control -e -b"

In another shell execute ./SecondoTTYBDB --profile

You will now see in the first shell the current stack trace of SECONDO while it is running. Execute the slow operation and have a look at the stack trace, and you see in which operations the CPU time is spent.

After you have finished your operation and you have quit SECONDO, a file named callgrind.out.<pid> is written into the current directory. The file is containing the stack trace of the This file can be analyzed by executing callgrind_annotate <filename>.

ld: [...] building for macOS-arm64 but attempting to link with file built for macOS-x86_64

It seems you are using a Mac with a ARM-based CPU. Your SECONDO-SDK was build on an Intel CPU. Please delete your old SECONDO-SDK (e.g., rm ~/secondo-sdk) and reinstall the latest SECONDO-SDK. Please also re-install your BerkeleyDB installation.

E_SMI_BDB sysErrCode=12 Cannot allocate memory

--------------------------- 
  Secondo-SMI Error Stack   
--------------------------- 
E_SMI_BDB sysErrCode=12 Cannot allocate memory -> [bdbFile.cpp:1622]

This error is most likely caused by a too small memory error for lock objects (more information can be found here and here). To solve this problem, two known solutions do exist:

  • Disable the transactions in Secondo. This can be done by setting RTFlags += SMI:NoTransactions in your SecondoConfig.ini
  • Increase the memory area for locks. This is controlled by the following settings in the SecondoConfig.ini
[BerkeleyDB]

MaxLockers=100
MaxLocks=5000
MaxLockObjects=5000

In most cases the values for MaxLocks and MaxLockObjects needs to be increased.

Compile error 'syntax error, unexpected string, expecting =' in *.y files

This error indicates, that you are using an outdated version of Bison. Please ensure that you have updated your project dependencies. At least Bison 3.0.4 is required to build the project.

Compile error ''register' storage class specifier is deprecated and incompatible with C++17'

This error indicates, that you are using an outdated version of Flex. Please ensure that you have updated your project dependencies. At least Flex 2.6.4 is required to build the project.

Compile error 'undefined reference to `TempRelation::BasicType[abi:cxx11]()'

A part of the project was built with an older C++ standard, another part with the C++17 standard (-std=c++17). The liker is unable to link these files. Please update your SECONDO to the most recent version and run:

make clean
make

Compile error 'fatal error: libxml/xmlreader.h: No such file or directory'

The GNOME XML library was not found on the system. Please install the library and the needed development files on the system. On Debian/Ubuntu based systems, this can be done be executing apt-get install libxml2-dev.

Crashes in the Distributed Algebra

You are connected with a Secondo server.
    error during creation of a relation from local file RoadsB2_28.bin
    ErrorCode :2
    ErrorMessage : Type map error for operator ffeed5!
    ----------------------------------------------------------------------
    Input:        (text)
    ----------------------------------------------------------------------
    Short:        (text)
    ----------------------------------------------------------------------
    Error Message(s):
    ----------------------------------------------------------------------
    Distributed2Algebra:                      could not extract filename from query

    ----------------------------------------------------------------------

    Secondo: Error in (query) expression.
    Command :
    let RoadsB2_28 =  '/home/userxy/secondo-databasesB/filetransfers/15865/RoadsB2_28.bin' ffeed5 consume  
    error during creation of a relation from local file RoadsB2_1.bin
    ErrorCode :2
    ErrorMessage : Type map error for operator ffeed5!
    ----------------------------------------------------------------------
    Input:        (text)
    ----------------------------------------------------------------------
    Short:        (text)
    ----------------------------------------------------------------------
    Error Message(s): 
    ----------------------------------------------------------------------
    Distributed2Algebra:                      could not extract filename from query

If you receive these or similar error messages while distributing a relation, you probably did not execute the touch command during the configuration of the Distributed2 Algebra.

See makefile.algebras in the secondo folder:

    #note if you want to enable thread save compilation the first time
    #on your system, goto into Secondo's home directory and enter:
    #touch $(grep -l "THREAD_SAFE" $(find -iname "*.h" -o -iname "*.cpp"))
    #This esnures a recompilation of files depending on the
    #THREAD_SAFE definition********
  1. Turn off the monitors.
  2. Then switch to the secondo folder and execute:
  3. touch $(grep -l "THREAD_SAFE" $(find -iname "*.h" -o -iname "*.cpp"))
  4. make
  5. Turn on the Monitors again and redo your distribution command.

How to run checkpd in git as a pre-commit check

Commits on Github are tested asynchronously by checkpd and a GitHub Action. Due to the asynchronous execution, it may take some time before an error is reported. To execute checkpd locally before a commit is made, use the included pre-commit check. This check can be enabled by executing the command cp -av CM-Scripts/pre-commit .git/hooks/pre-commit from the root directory of your git repository.

⚠️ **GitHub.com Fallback** ⚠️