Coder Social home page Coder Social logo

hoene / libmysofa Goto Github PK

View Code? Open in Web Editor NEW
127.0 14.0 69.0 256.04 MB

Reader for AES SOFA files to get better HRTFs

License: Other

CMake 4.95% C 85.58% Shell 0.44% JavaScript 7.56% C++ 0.95% MATLAB 0.48% Emacs Lisp 0.03%
hrtf sofa spatial-audio 3d-audio hdf

libmysofa's People

Contributors

0-wiz-0 avatar andreasfranck avatar biswa96 avatar bmwiedemann avatar brettsimons avatar bsdkaffee avatar btbn avatar dbermond avatar dsseng avatar edwardbetts avatar fjtrujy avatar haheho avatar hoene avatar kwizart avatar magwyz avatar mgeier avatar petibub avatar pyrapple avatar richardpl avatar simonschwaer avatar skresearcher avatar stevenjm avatar threedeejay avatar umlaeute avatar wiiaboo avatar ygrabit avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

libmysofa's Issues

run tests outside of docker

the sofa2json test currently depends on docker.

since the test is a blackbox (see #20), it is unclear why it needs to be encapsulated in a container.

most real-world test suites i've seen so far can be run fine without virtualization/containerization (though i see the merits of running them in containers anyhow: e.g. because you don't trust any pre-compiled binary blob where you cannot inspect the code for maliciousness; otoh, docker provides little protection against attacks anyhow).

it would be great if the tests could be run on an ordinary system, even if it doesn't support virtualisation (think: tseting whether the library behaves correctly on older arm architectures)

There is a stack-based buffer overflow in the directblockRead function of fractalhead.c(at 172)

A crafted input will lead to crash in fractalhead.c at libmysofa v0.8.

Triggered by
./mysofa2json POC

Poc
overflow-libmysofa1

The ASAN information is as follows:

./mysofa2json overflow-libmysofa1 
ASAN:SIGSEGV
=================================================================
==6617==ERROR: AddressSanitizer: stack-overflow on address 0x7ffe850c2ed8 (pc 0x7f91956d5568 bp 0x7ffe850c3720 sp 0x7ffe850c2ec0 T0)
    #0 0x7f91956d5567 in malloc (/usr/lib/x86_64-linux-gnu/libasan.so.2+0x98567)
    #1 0x40d5d9 in directblockRead /home/libmysofa/libmysofa_asan/libmysofa/src/hdf/fractalhead.c:172
    #2 0x40f74a in fractalheapRead /home/libmysofa/libmysofa_asan/libmysofa/src/hdf/fractalhead.c:451
    #3 0x40a534 in dataobjectRead /home/libmysofa/libmysofa_asan/libmysofa/src/hdf/dataobject.c:931
    #4 0x40d8d6 in directblockRead /home/libmysofa/libmysofa_asan/libmysofa/src/hdf/fractalhead.c:201
    #5 0x40f74a in fractalheapRead /home/libmysofa/libmysofa_asan/libmysofa/src/hdf/fractalhead.c:451
    #6 0x40a534 in dataobjectRead /home/libmysofa/libmysofa_asan/libmysofa/src/hdf/dataobject.c:931
    #7 0x40d8d6 in directblockRead /home/libmysofa/libmysofa_asan/libmysofa/src/hdf/fractalhead.c:201
    #8 0x40f74a in fractalheapRead /home/libmysofa/libmysofa_asan/libmysofa/src/hdf/fractalhead.c:451
    #9 0x40a534 in dataobjectRead /home/libmysofa/libmysofa_asan/libmysofa/src/hdf/dataobject.c:931
    #10 0x40d8d6 in directblockRead /home/libmysofa/libmysofa_asan/libmysofa/src/hdf/fractalhead.c:201
    #11 0x40f74a in fractalheapRead /home/libmysofa/libmysofa_asan/libmysofa/src/hdf/fractalhead.c:451
    #12 0x40a534 in dataobjectRead /home/libmysofa/libmysofa_asan/libmysofa/src/hdf/dataobject.c:931
    #13 0x40d8d6 in directblockRead /home/libmysofa/libmysofa_asan/libmysofa/src/hdf/fractalhead.c:201
    #14 0x40f74a in fractalheapRead /home/libmysofa/libmysofa_asan/libmysofa/src/hdf/fractalhead.c:451
    #15 0x40a534 in dataobjectRead /home/libmysofa/libmysofa_asan/libmysofa/src/hdf/dataobject.c:931
    #16 0x40d8d6 in directblockRead /home/libmysofa/libmysofa_asan/libmysofa/src/hdf/fractalhead.c:201
    #17 0x40f74a in fractalheapRead /home/libmysofa/libmysofa_asan/libmysofa/src/hdf/fractalhead.c:451
    #18 0x40a534 in dataobjectRead /home/libmysofa/libmysofa_asan/libmysofa/src/hdf/dataobject.c:931
    #19 0x40d8d6 in directblockRead /home/libmysofa/libmysofa_asan/libmysofa/src/hdf/fractalhead.c:201
.....

gdb debug info:

gdb ./mysofa2json 
GNU gdb (Ubuntu 7.11.1-0ubuntu1~16.5) 7.11.1
Copyright (C) 2016 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
and "show warranty" for details.
This GDB was configured as "x86_64-linux-gnu".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>.
Find the GDB manual and other documentation resources online at:
<http://www.gnu.org/software/gdb/documentation/>.
For help, type "help".
Type "apropos word" to search for commands related to "word"...
Reading symbols from ./mysofa2json...done.
(gdb) r overflow-libmysofa1
Starting program: /usr/local/libmysofa_ASAN/bin/mysofa2json overflow-libmysofa1
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".

Program received signal SIGSEGV, Segmentation fault.
0x00007ffff6f02568 in malloc () from /usr/lib/x86_64-linux-gnu/libasan.so.2
(gdb) bt
#0  0x00007ffff6f02568 in malloc () from /usr/lib/x86_64-linux-gnu/libasan.so.2
#1  0x000000000040d5da in directblockRead (reader=0x7fffffffde10, dataobject=0x617000a5cd08, fractalheap=0x617000a5cee8) at /home/libmysofa/libmysofa_asan/libmysofa/src/hdf/fractalhead.c:172
#2  0x000000000040f74b in fractalheapRead (reader=0x7fffffffde10, dataobject=0x617000a5cd08, fractalheap=0x617000a5cee8) at /home/libmysofa/libmysofa_asan/libmysofa/src/hdf/fractalhead.c:451
#3  0x000000000040a535 in dataobjectRead (reader=0x7fffffffde10, dataobject=0x617000a5cd08, name=0x60200006ed50 "7") at /home/libmysofa/libmysofa_asan/libmysofa/src/hdf/dataobject.c:931

about code:

} else if (typeandversion == 1) {
                       /*
                        * pointer to another data object
                        */
                       unknown = readValue(reader, 6);
                       if (unknown) {
                               log("FHDB type 1 unsupported values\n");
                               return MYSOFA_UNSUPPORTED_FORMAT;
                       }

                       len = fgetc(reader->fhd);
                       if (len < 0)
                               return MYSOFA_READ_ERROR;
                       assert(len < 0x100);

           --------> if (!(name = malloc(len + 1)))
                               return MYSOFA_NO_MEMORY;

Compilation error: "../../build/src/mysofa_export.h: No such file or directory".

About one month now FFmpeg uses libmysofa for its SOFAlizer filter. See FFmpeg/FFmpeg@2336c76.
Building libmysofa then went fine. With all the commits being pushed the last 2 weeks it now results in:

Downloading (via git clone) libmysofa_git from https://github.com/hoene/libmysofa.git
Cloning into 'libmysofa_git.tmp'...
remote: Counting objects: 1075, done.
remote: Compressing objects: 100% (58/58), done.
Receiving objects:  remote: Total 1075 (delta 68), reused 65 (delta 43), pack-reused 974
Receiving objects: 100% (1075/1075), 99.42 MiB | 689.00 KiB/s, done.
Resolving deltas: 100% (705/705), done.
Checking connectivity... done.
done git cloning to libmysofa_git
doing git checkout master
Already on 'master'
Your branch is up-to-date with 'origin/master'.
Updating to latest libmysofa_git git version [origin/master]...
Already up-to-date.
got no code changes, not forcing reconfigure for that...
doing cmake in /cygdrive/m/ffmpeg-windows-build-helpers-master/native_build/windows/ffmpeg_local_builds/sandbox/win32/libmysofa_git with PATH=/cygdrive/m/ffmpeg-windows-build-helpers-master/native_build/windows/ffmpeg_local_builds/sandbox/cross_compilers/mingw-w64-i686/bin:$PATH with extra_args=-DBUILD_SHARED_LIBS=0 -DBUILD_TESTS=0 like this:
cmake -G"Unix Makefiles" . -DENABLE_STATIC_RUNTIME=1 -DCMAKE_SYSTEM_NAME=Windows -DCMAKE_RANLIB=/cygdrive/m/ffmpeg-windows-build-helpers-master/native_build/windows/ffmpeg_local_builds/sandbox/cross_compilers/mingw-w64-i686/bin/i686-w64-mingw32-ranlib -DCMAKE_C_COMPILER=/cygdrive/m/ffmpeg-windows-build-helpers-master/native_build/windows/ffmpeg_local_builds/sandbox/cross_compilers/mingw-w64-i686/bin/i686-w64-mingw32-gcc -DCMAKE_CXX_COMPILER=/cygdrive/m/ffmpeg-windows-build-helpers-master/native_build/windows/ffmpeg_local_builds/sandbox/cross_compilers/mingw-w64-i686/bin/i686-w64-mingw32-g++ -DCMAKE_RC_COMPILER=/cygdrive/m/ffmpeg-windows-build-helpers-master/native_build/windows/ffmpeg_local_builds/sandbox/cross_compilers/mingw-w64-i686/bin/i686-w64-mingw32-windres -DCMAKE_INSTALL_PREFIX=/cygdrive/m/ffmpeg-windows-build-helpers-master/native_build/windows/ffmpeg_local_builds/sandbox/cross_compilers/mingw-w64-i686/i686-w64-mingw32 -DBUILD_SHARED_LIBS=0 -DBUILD_TESTS=0
-- The C compiler identification is GNU 7.1.0
-- The CXX compiler identification is GNU 7.1.0
-- Check for working C compiler: /cygdrive/m/ffmpeg-windows-build-helpers-master/native_build/windows/ffmpeg_local_builds/sandbox/cross_compilers/mingw-w64-i686/bin/i686-w64-mingw32-gcc
-- Check for working C compiler: /cygdrive/m/ffmpeg-windows-build-helpers-master/native_build/windows/ffmpeg_local_builds/sandbox/cross_compilers/mingw-w64-i686/bin/i686-w64-mingw32-gcc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Check for working CXX compiler: /cygdrive/m/ffmpeg-windows-build-helpers-master/native_build/windows/ffmpeg_local_builds/sandbox/cross_compilers/mingw-w64-i686/bin/i686-w64-mingw32-g++
-- Check for working CXX compiler: /cygdrive/m/ffmpeg-windows-build-helpers-master/native_build/windows/ffmpeg_local_builds/sandbox/cross_compilers/mingw-w64-i686/bin/i686-w64-mingw32-g++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Performing Test C_HAS_WALL
-- Performing Test C_HAS_WALL - Success
FATALCannot find nuget command line tool.
Install it with e.g. choco install nuget.commandline
-- Performing Test COMPILER_HAS_DEPRECATED_ATTR
-- Performing Test COMPILER_HAS_DEPRECATED_ATTR - Success
-- Configuring done
-- Generating done
CMake Warning:
  Manually-specified variables were not used by the project:

    ENABLE_STATIC_RUNTIME


-- Build files have been written to: /cygdrive/m/ffmpeg-windows-build-helpers-master/native_build/windows/ffmpeg_local_builds/sandbox/win32/libmysofa_git

making /cygdrive/m/ffmpeg-windows-build-helpers-master/native_build/windows/ffmpeg_local_builds/sandbox/win32/libmysofa_git as $ PATH=/cygdrive/m/ffmpeg-windows-build-helpers-master/native_build/windows/ffmpeg_local_builds/sandbox/cross_compilers/mingw-w64-i686/bin:$PATH make  -j 1

Scanning dependencies of target mysofa-static
[  4%] Building C object src/CMakeFiles/mysofa-static.dir/hrtf/reader.c.obj
In file included from /cygdrive/m/ffmpeg-windows-build-helpers-master/native_build/windows/ffmpeg_local_builds/sandbox/win32/libmysofa_git/src/hrtf/reader.c:14:0:
/cygdrive/m/ffmpeg-windows-build-helpers-master/native_build/windows/ffmpeg_local_builds/sandbox/win32/libmysofa_git/src/hrtf/mysofa.h:14:10: fatal error: ../../build/src/mysofa_export.h: No such file or directory
 #include "../../build/src/mysofa_export.h"
          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
compilation terminated.
make[2]: *** [src/CMakeFiles/mysofa-static.dir/build.make:64: src/CMakeFiles/mysofa-static.dir/hrtf/reader.c.obj] Error 1
make[1]: *** [CMakeFiles/Makefile2:86: src/CMakeFiles/mysofa-static.dir/all] Error 2
make: *** [Makefile:150: all] Error 2

The 'build'-dir is practically empty, so #include "../../build/src/mysofa_export.h" in 'src/hrtf/mysofa.h' indeed points to a non-existing file. Or am I doing something wrong?

No errors compiling the v0.5 release. Some warnings though:

downloading https://github.com/hoene/libmysofa/archive/v0.5.tar.gz
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   121    0   121    0     0    202      0 --:--:-- --:--:-- --:--:--   256
100 73.2M    0 73.2M    0     0   632k      0 --:--:--  0:01:58 --:--:--  653k
doing cmake in /cygdrive/m/ffmpeg-windows-build-helpers-master/native_build/windows/ffmpeg_local_builds/sandbox/win32/libmysofa-0.5 with PATH=/cygdrive/m/ffmpeg-windows-build-helpers-master/native_build/windows/ffmpeg_local_builds/sandbox/cross_compilers/mingw-w64-i686/bin:$PATH with extra_args=-DBUILD_SHARED_LIBS=0 -DBUILD_TESTS=0 like this:
cmake -G"Unix Makefiles" . -DENABLE_STATIC_RUNTIME=1 -DCMAKE_SYSTEM_NAME=Windows -DCMAKE_RANLIB=/cygdrive/m/ffmpeg-windows-build-helpers-master/native_build/windows/ffmpeg_local_builds/sandbox/cross_compilers/mingw-w64-i686/bin/i686-w64-mingw32-ranlib -DCMAKE_C_COMPILER=/cygdrive/m/ffmpeg-windows-build-helpers-master/native_build/windows/ffmpeg_local_builds/sandbox/cross_compilers/mingw-w64-i686/bin/i686-w64-mingw32-gcc -DCMAKE_CXX_COMPILER=/cygdrive/m/ffmpeg-windows-build-helpers-master/native_build/windows/ffmpeg_local_builds/sandbox/cross_compilers/mingw-w64-i686/bin/i686-w64-mingw32-g++ -DCMAKE_RC_COMPILER=/cygdrive/m/ffmpeg-windows-build-helpers-master/native_build/windows/ffmpeg_local_builds/sandbox/cross_compilers/mingw-w64-i686/bin/i686-w64-mingw32-windres -DCMAKE_INSTALL_PREFIX=/cygdrive/m/ffmpeg-windows-build-helpers-master/native_build/windows/ffmpeg_local_builds/sandbox/cross_compilers/mingw-w64-i686/i686-w64-mingw32 -DBUILD_SHARED_LIBS=0 -DBUILD_TESTS=0
-- The C compiler identification is GNU 7.1.0
-- The CXX compiler identification is GNU 7.1.0
-- Check for working C compiler: /cygdrive/m/ffmpeg-windows-build-helpers-master/native_build/windows/ffmpeg_local_builds/sandbox/cross_compilers/mingw-w64-i686/bin/i686-w64-mingw32-gcc
-- Check for working C compiler: /cygdrive/m/ffmpeg-windows-build-helpers-master/native_build/windows/ffmpeg_local_builds/sandbox/cross_compilers/mingw-w64-i686/bin/i686-w64-mingw32-gcc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Check for working CXX compiler: /cygdrive/m/ffmpeg-windows-build-helpers-master/native_build/windows/ffmpeg_local_builds/sandbox/cross_compilers/mingw-w64-i686/bin/i686-w64-mingw32-g++
-- Check for working CXX compiler: /cygdrive/m/ffmpeg-windows-build-helpers-master/native_build/windows/ffmpeg_local_builds/sandbox/cross_compilers/mingw-w64-i686/bin/i686-w64-mingw32-g++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Performing Test C_HAS_WALL
-- Performing Test C_HAS_WALL - Success
-- Configuring done
-- Generating done
CMake Warning:
  Manually-specified variables were not used by the project:

    ENABLE_STATIC_RUNTIME


-- Build files have been written to: /cygdrive/m/ffmpeg-windows-build-helpers-master/native_build/windows/ffmpeg_local_builds/sandbox/win32/libmysofa-0.5

making /cygdrive/m/ffmpeg-windows-build-helpers-master/native_build/windows/ffmpeg_local_builds/sandbox/win32/libmysofa-0.5 as $ PATH=/cygdrive/m/ffmpeg-windows-build-helpers-master/native_build/windows/ffmpeg_local_builds/sandbox/cross_compilers/mingw-w64-i686/bin:$PATH make  -j 1

Scanning dependencies of target mysofa-static
[  4%] Building C object src/CMakeFiles/mysofa-static.dir/hrtf/reader.c.obj
/cygdrive/m/ffmpeg-windows-build-helpers-master/native_build/windows/ffmpeg_local_builds/sandbox/win32/libmysofa-0.5/src/hrtf/reader.c: In function 'mysofa_load':
/cygdrive/m/ffmpeg-windows-build-helpers-master/native_build/windows/ffmpeg_local_builds/sandbox/win32/libmysofa-0.5/src/hrtf/reader.c:221:5: warning: this 'else' clause does not guard... [-Wmisleading-indentation]
     else
     ^~~~
/cygdrive/m/ffmpeg-windows-build-helpers-master/native_build/windows/ffmpeg_local_builds/sandbox/win32/libmysofa-0.5/src/hrtf/reader.c:224:2: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the 'else'
  if (!reader.fhd) {
  ^~
[  9%] Building C object src/CMakeFiles/mysofa-static.dir/hdf/superblock.c.obj
[ 14%] Building C object src/CMakeFiles/mysofa-static.dir/hdf/dataobject.c.obj
/cygdrive/m/ffmpeg-windows-build-helpers-master/native_build/windows/ffmpeg_local_builds/sandbox/win32/libmysofa-0.5/src/hdf/dataobject.c: In function 'readDataVar':
/cygdrive/m/ffmpeg-windows-build-helpers-master/native_build/windows/ffmpeg_local_builds/sandbox/win32/libmysofa-0.5/src/hdf/dataobject.c:532:28: warning: format '%lX' expects argument of type 'long unsigned int', but argument 3 has type 'uint64_t {aka long long unsigned int}' [-Wformat=]
    sprintf(number, "REF%08lX", reference);
                        ~~~~^
                        %08I64X
/cygdrive/m/ffmpeg-windows-build-helpers-master/native_build/windows/ffmpeg_local_builds/sandbox/win32/libmysofa-0.5/src/hdf/dataobject.c:532:28: warning: format '%lX' expects argument of type 'long unsigned int', but argument 3 has type 'uint64_t {aka long long unsigned int}' [-Wformat=]
    sprintf(number, "REF%08lX", reference);
                        ~~~~^
                        %08I64X
/cygdrive/m/ffmpeg-windows-build-helpers-master/native_build/windows/ffmpeg_local_builds/sandbox/win32/libmysofa-0.5/src/hdf/dataobject.c:524:6: warning: 'gcol' may be used uninitialized in this function [-Wmaybe-uninitialized]
   if (!!(err = gcolRead(reader, gcol, reference, &dataobject))) {
      ^
[ 19%] Building C object src/CMakeFiles/mysofa-static.dir/hdf/btree.c.obj
[ 23%] Building C object src/CMakeFiles/mysofa-static.dir/hdf/fractalhead.c.obj
/cygdrive/m/ffmpeg-windows-build-helpers-master/native_build/windows/ffmpeg_local_builds/sandbox/win32/libmysofa-0.5/src/hdf/fractalhead.c: In function 'indirectblockRead':
/cygdrive/m/ffmpeg-windows-build-helpers-master/native_build/windows/ffmpeg_local_builds/sandbox/win32/libmysofa-0.5/src/hdf/fractalhead.c:266:7: warning: 'child_direct_block' may be used uninitialized in this function [-Wmaybe-uninitialized]
   if (validAddress(reader, child_direct_block)) {
       ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
[ 28%] Building C object src/CMakeFiles/mysofa-static.dir/hdf/gunzip.c.obj
[ 33%] Building C object src/CMakeFiles/mysofa-static.dir/hdf/gcol.c.obj
[ 38%] Building C object src/CMakeFiles/mysofa-static.dir/hrtf/check.c.obj
[ 42%] Building C object src/CMakeFiles/mysofa-static.dir/hrtf/spherical.c.obj
[ 47%] Building C object src/CMakeFiles/mysofa-static.dir/hrtf/lookup.c.obj
[ 52%] Building C object src/CMakeFiles/mysofa-static.dir/hrtf/tools.c.obj
[ 57%] Building C object src/CMakeFiles/mysofa-static.dir/hrtf/kdtree.c.obj
[ 61%] Building C object src/CMakeFiles/mysofa-static.dir/hrtf/neighbors.c.obj
[ 66%] Building C object src/CMakeFiles/mysofa-static.dir/hrtf/interpolate.c.obj
[ 71%] Building C object src/CMakeFiles/mysofa-static.dir/hrtf/resample.c.obj
[ 76%] Building C object src/CMakeFiles/mysofa-static.dir/hrtf/loudness.c.obj
/cygdrive/m/ffmpeg-windows-build-helpers-master/native_build/windows/ffmpeg_local_builds/sandbox/win32/libmysofa-0.5/src/hrtf/loudness.c: In function 'mysofa_loudness':
/cygdrive/m/ffmpeg-windows-build-helpers-master/native_build/windows/ffmpeg_local_builds/sandbox/win32/libmysofa-0.5/src/hrtf/loudness.c:48:49: warning: 'index' may be used uninitialized in this function [-Wmaybe-uninitialized]
  factor = loudness(hrtf->DataIR.values + (index / 3) * hrtf->N * hrtf->R,
                                          ~~~~~~~^~~~
[ 80%] Building C object src/CMakeFiles/mysofa-static.dir/hrtf/minphase.c.obj
[ 85%] Building C object src/CMakeFiles/mysofa-static.dir/hrtf/easy.c.obj
[ 90%] Building C object src/CMakeFiles/mysofa-static.dir/hrtf/cache.c.obj
[ 95%] Building C object src/CMakeFiles/mysofa-static.dir/resampler/speex_resampler.c.obj
[100%] Linking C static library libmysofa.a
[100%] Built target mysofa-static
make installing /cygdrive/m/ffmpeg-windows-build-helpers-master/native_build/windows/ffmpeg_local_builds/sandbox/win32/libmysofa-0.5 as $ PATH=/cygdrive/m/ffmpeg-windows-build-helpers-master/native_build/windows/ffmpeg_local_builds/sandbox/cross_compilers/mingw-w64-i686/bin:$PATH make install
[100%] Built target mysofa-static
Install the project...
-- Install configuration: ""
-- Installing: /cygdrive/m/ffmpeg-windows-build-helpers-master/native_build/windows/ffmpeg_local_builds/sandbox/cross_compilers/mingw-w64-i686/i686-w64-mingw32/lib/libmysofa.a
-- Installing: /cygdrive/m/ffmpeg-windows-build-helpers-master/native_build/windows/ffmpeg_local_builds/sandbox/cross_compilers/mingw-w64-i686/i686-w64-mingw32/include/mysofa.h

How to copy MYSOFA_LOOKUP?

First of all, thanks for this library, I especially like it's nicely modular API!

I would like to use mysofa_lookup() from multiple threads in parallel.

As stated in the README, the library isn't threadsafe (and it really isn't, I tried it and got very strange behavior).

In order to use it with multiple threads, I would like to make copies of the MYSOFA_LOOKUP structure to avoid those problems.

Is there a way to copy those?

I guess I could call mysofa_lookup_init() multiple times to get copies, but I would like to avoid needing access to the MYSOFA_HRTF struct at this point.
The reason for this is that I'm loading all data from MYSOFA_HRTF into my own data structure and I'm deleting my MYSOFA_HRTF as soon as I've obtained MYSOFA_LOOKUP from it.

Windows build broken

The project for Windows got broken after the recent structural changes. I am unable to rebuild the Windows DLL. In particular, I was not able to solve the following problem:

In mysofa.h: Cannot open include file: '../../build/src/mysofa_export.h': No such file or directory

I don't know in which directory this file is expected to be found, but it seems to be missing. Could you provide that file and clarify the directory?

Regards,
Piotr

default.sofa (and why is it installed?)

it seems that the file share/default.sofa is nowhere actually used in the code.
at least, a quick rgrep default.sofa * only returns its enumeration in the CMakeList.txt.

instead the symlinked-to file MIT_KEMAR_normal_pinna.sofa is referenced directly in some of the test sources. (I guess the original idea was to keep the code independent of the actually used sofa-file, but it seems that this was forgotten).

more interestingly though, is the question why the files in share/ are actually installed (when running make install). afaict, they are not used by anything outside the test suite...

license/copyright of third-party/ components

the third-party/ folder contains a number of libraries, supposedly (according to the folder-name) written (and copyrighted) by 3rd parties.
unfortunately, apart from zlib (which contains at least some information in the zlib.h header) it is unclear who are the copyright holders and under which license the various files are distributed.

unknown license for SOFA files

the files in /tests have no license information.

instead the README says that they were downloaded from some 3rd party website. i couldn't find any license information on that website as well.

since there is no license, the files are automatically under All rights reserved, thus

you have no permission from the creators of the software to use, modify, or share [...]

remove check condition for ReceiverPosition

Hello, I have files which fail mysofa_check (check.c: 137) because of the requirement that ReceiverPosition.values[1] be negative. We generate files with a positive values[1] and negative values[4]. Would it be okay to either remove the line or change it to !fequals(hrtf->ReceiverPosition.values[1], 0) ?

Patch: Fix shared build on mingw-w64 windows

Hi there.

I found that when building a shared version of libmysofa on Windows using mingw-w64 on MSYS2, it fails with undefined references to the zlib library:

CMakeFiles/mysofa-shared.dir/objects.a(gunzip.c.obj):gunzip.c:(.text+0x5e): undefined reference to `inflateInit_'
CMakeFiles/mysofa-shared.dir/objects.a(gunzip.c.obj):gunzip.c:(.text+0x71): undefined reference to `inflate'
CMakeFiles/mysofa-shared.dir/objects.a(gunzip.c.obj):gunzip.c:(.text+0x81): undefined reference to `inflateEnd'
collect2.exe: error: ld returned 1 exit status
make[2]: *** [src/CMakeFiles/mysofa-shared.dir/build.make:590: src/libmysofa.dll] Error 1
make[1]: *** [CMakeFiles/Makefile2:88: src/CMakeFiles/mysofa-shared.dir/all] Error 2
make: *** [Makefile:152: all] Error 2

So I wrote a patch that corrects linking with zlib and allows installation of both the dll and dll.a files instead of just the dll file without the dll.a file. Here's the link.
https://github.com/Adsun701/MINGW-packages/blob/master/mingw-w64-libmysofa/0001-libmysofa-0.6-fix-undefined-linking-for-shared-build.patch

Thanks!

Andy

slow loading of sofa files

When trying to load big sofa files, it takes several seconds, where previously it would take most 1 second (with sofalizer from FFmpeg using NetCDF directly).

Non real time safe mysofa_getfilter_float function

This is great library, but making an c non real time safe implementation to get filters is a little bit pointless. mysofa_getfilter_float function cannot be used in an audio thread because of the great use of malloc, also predefining the filter length is useless if another auxiliar allocation is going to be made inside the function.

//Outside function 
float leftIR[filter_length];
float rightIR[filter_length];

mysofa_getfilter_float(hrtf, 10, 10, 10, leftIR, rightIR, &leftDelay, &rightDelay);

//Inside function 
MYSOFA_EXPORT void mysofa_getfilter_float(struct MYSOFA_EASY* easy, float x, float y, float z,
					  float *IRleft, float *IRright,
					  float *delayLeft, float *delayRight)
{
	float c[3];
	float *fir = malloc(easy->hrtf->N * easy->hrtf->R * sizeof(float)); // <--- this can be preacllocated when the sofa file is loaded

A small article about this:
http://www.rossbencina.com/code/real-time-audio-programming-101-time-waits-for-nothing

BUILD_TESTS requires cunit but doesn't check for its presence

BUILD_TESTS defaults to on, but building the tests fails if the cunit headers are not found (or not present).

cd /src/libmysofa/finkbuild/src && /sw/var/lib/fink/path-prefix-clang/cc   -Wall -O3 -DNDEBUG -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk -mmacosx-version-min=10.11   -std=gnu99 -o CMakeFiles/tests.dir/tests/tests.c.o   -c /src/libmysofa/src/tests/tests.c
/src/libmysofa/src/tests/tests.c:1:10: fatal error: 'CUnit/Basic.h' file not found
#include <CUnit/Basic.h>

FFmpeg make fails with error on Debian Buster - Rpi4

I've tried to get ffmpeg to make with the default debian packages from apt repo, and tried to build the .deb and force install it. Neither works. Both end with this error. Any idea what's going on here?

CC	libavfilter/af_sofalizer.o
libavfilter/af_sofalizer.c: In function โ€˜preload_sofaโ€™:
libavfilter/af_sofalizer.c:166:32: error: implicit declaration of function โ€˜mysofa_neighborhood_init_withstepdefineโ€™; did you mean โ€˜mysofa_neighborhood_initโ€™? [-Werror=implicit-function-declaration]
         s->sofa.neighborhood = mysofa_neighborhood_init_withstepdefine(s->sofa.hrtf,
                                ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                                mysofa_neighborhood_init
libavfilter/af_sofalizer.c:166:30: warning: assignment to โ€˜struct MYSOFA_NEIGHBORHOOD *โ€™ from โ€˜intโ€™ makes pointer from integer without a cast [-Wint-conversion]
         s->sofa.neighborhood = mysofa_neighborhood_init_withstepdefine(s->sofa.hrtf,
                              ^
cc1: some warnings being treated as errors
make: *** [ffbuild/common.mak:59: libavfilter/af_sofalizer.o] Error 1

some more license information to clarify

thanks for all the updates on licenses.

there's still a few issues, clarifications required:

  • is ./share/MIT_KEMAR_normal_pinna.sofa covered by the tests/LICENSE.MIT_KEMAR_large_pinna as well?
  • tests/Pulse.* are covered by CC-BY-4.0, but who is the copyright holder? this is especially important, as the CC-BY license requires attribution, but who is to attribute?
  • tests/FHK_HRIR_L2345 are covered by CC-BY-SA-3.0, but who is the copyright holder? this is especially important, as the CC-BY license requires attribution, but who is to attribute?

source missing for `sofa2json` test

the tests/s2j folder contains a number of binaries without source-code

  • sofa2json
  • libnetcdf_c++4.so.1.0.3

i'd suggest to:

  • remove all binaries
  • add the source of sofa2json
    • and build it when building libmysofa
  • drop the dependency on the no-longer-existing libnetcdfc++4 packge (to the docker image can be used without having to manually provide an outdated and unmaintained binary blob)

Uninvalid read of memory cause segmentation fault

This bug is found in git commit: a55565a

To reproduce the bug:
valgrind ./mysofa2json test.input

output of valgrind:
==17712== Invalid read of size 1
==17712== at 0x10A991: printDimensions (in /home/bwang/Bowen/gitrepo/aflpp-target/libmysofa/libmysofa-vanilla/build/src/mysofa2json)
==17712== by 0x10AB3B: printArray (in /home/bwang/Bowen/gitrepo/aflpp-target/libmysofa/libmysofa-vanilla/build/src/mysofa2json)
==17712== by 0x10AF8B: printJson (in /home/bwang/Bowen/gitrepo/aflpp-target/libmysofa/libmysofa-vanilla/build/src/mysofa2json)
==17712== by 0x10A459: main (in /home/bwang/Bowen/gitrepo/aflpp-target/libmysofa/libmysofa-vanilla/build/src/mysofa2json)
==17712== Address 0x0 is not stack'd, malloc'd or (recently) free'd
==17712==
==17712==

PoC input is attached.
test

Minphase filter does not sound well...

@richardpl
Another issue I found is if previously call mysofa_load, and later mysofa_open with same sofa file and sample rate to one reported in mysofa_load, length of IRs: N changes.
The resulted IRs are bad, because I get artifacts when filtering in time domain, the one in frequency domain are still present but much less noticeable.

Add a pkg-config file

libmysofa should install a pkg-config file alongside the library and headers. This is especially useful (and in a way necessary) for static builds, where zlib and libm need to be explicitly linked to if support is compiled in.
Something simple like:

prefix=xxx
exec_prefix=${prefix}
libdir=${exec_prefix}/lib
includedir=${prefix}/include

Name: libmysofa
Version: 0.7
Description: Reader for AES SOFA files to get better HRTFs
URL: https://github.com/hoene/libmysofa
Libs: -L${libdir} -lmysofa
Libs.Private: -lm -lz
Cflags: -I${includedir}

With -lm and -lz being included only if needed (as detected by CMake) should be enough.

Unpredictable behavior with some sofa files

I was testing this library on OsX on real time but some times the library start to get some really clipped values with huge exponentials. I was using HRIR_CIRC360 KU100.sofa from the Thk database you can download the file here:
http://sofacoustics.org/data/database/thk/

And I was able to reproduce the bug with this code, some times you have to run it more that one time to start to get huge random values. Finally I tried to test the Sadie database but libmysofa
is not able to load it. The link to sadie hrtf: https://www.york.ac.uk/sadie-project/database.html. Thanks I hope you can help me to fix this issues.

int main (int argc, char* argv[])
{

    int filter_length;
    int err;
    struct MYSOFA_EASY *hrtf = NULL;
    
    hrtf = mysofa_open("HRIR_CIRC360 KU100.sofa", 44100, &filter_length, &err);
    
    std::cout <<"Phi max: "+std::to_string(hrtf->lookup->phi_max)<< std::endl;
    std::cout <<"Phi min: "+std::to_string(hrtf->lookup->phi_min)<< std::endl;
    std::cout <<"Phi max: "+std::to_string(hrtf->lookup->theta_max)<< std::endl;
    std::cout <<"Phi min: "+std::to_string(hrtf->lookup->theta_min)<< std::endl;
    std::cout <<"Rad max: "+std::to_string(hrtf->lookup->radius_max)<< std::endl;
    std::cout <<"Rad min: "+std::to_string(hrtf->lookup->radius_min)<< std::endl;
    std::cout <<"Samples: "+std::to_string(hrtf->hrtf->N)<< std::endl;
    std::cout <<"Num meassures: "+std::to_string(hrtf->hrtf->M)<< std::endl;
    std::cout <<"Num receiver: "+std::to_string(hrtf->hrtf->R)<< std::endl;
    std::cout <<"Num emitters: "+std::to_string(hrtf->hrtf->E)<< std::endl;
    std::cout <<"Sampling Rate: "+std::to_string(hrtf->hrtf->DataSamplingRate.values[0])<< std::endl;
    
    if(hrtf==NULL)
        return err;
    
    float leftIR[filter_length];
    float rightIR[filter_length];
    float leftDelay;          
    float rightDelay;         
    
    
    std::cout <<"coord num: "+std::to_string(hrtf->hrtf->SourcePosition.elements);
    
    for(int t=0; t<10000;t++) //Rapid and multiple changes as in real time
    for(int i=0; i<hrtf->hrtf->SourcePosition.elements;i+=3)
    {
        double x=hrtf->hrtf->SourcePosition.values[i];
        double y=hrtf->hrtf->SourcePosition.values[i+1];
        double z=hrtf->hrtf->SourcePosition.values[i+2];
        
        mysofa_getfilter_float(hrtf, x, y, z,&leftIR[0], &rightIR[0], &leftDelay, &rightDelay);
        
        for(int j=0; j<filter_length;j++)
        {
            if(leftIR[j]>1 || rightIR[j]>1)
            {
                std::cout <<"Clipping"<< std::endl;
                std::cout <<std::to_string(leftIR[j])<< std::endl;
                std::cout <<std::to_string(rightIR[j])<< std::endl;
            }
        }
    }
    
    mysofa_close(hrtf);
    return 0;
}

Uninitialized use found in mysofa2json[bug]

There is an uninitialized use in mysofa2json, the bug is found in git commit 3dba53f.

To trigger the bug, after compiling the target:
valgrind ./mysofa2json test-input.

PoC input is attached(I have to change the suffix of input to zip because of github's upload regulation, but this input in generated by fuzzer.
input.zip
)

Add math and zlib as possible private libs to the pkg-config file

(already posted here, but as this issue is already closed, probably no one is notified)

At this moment FFmpeg still manually links libmysofa and its dependencies.
This works, but I had a look to have it use libmysofa's pkg-config file instead:

diff --git a/configure b/configure
index 9fa1665..856bddf 100755
--- a/configure
+++ b/configure
@@ -6000,7 +6000,8 @@ enabled libmfx            && { check_pkg_config libmfx libmfx "mfx/mfxvideo.h" M
                                { require libmfx "mfx/mfxvideo.h" MFXInit "-llibmfx $advapi32_extralibs" && warn "using libmfx without pkg-config"; } }
 enabled libmodplug        && require_pkg_config libmodplug libmodplug libmodplug/modplug.h ModPlug_Load
 enabled libmp3lame        && require "libmp3lame >= 3.98.3" lame/lame.h lame_set_VBR_quality -lmp3lame $libm_extralibs
-enabled libmysofa         && require libmysofa "mysofa.h" mysofa_load -lmysofa $zlib_extralibs
+enabled libmysofa         && { check_pkg_config libmysofa libmysofa mysofa.h mysofa_load ||
+                               require libmysofa mysofa.h mysofa_load -lmysofa $zlib_extralibs; }
 enabled libnpp            && { check_lib libnpp npp.h nppGetLibVersion -lnppig -lnppicc -lnppc ||
                                check_lib libnpp npp.h nppGetLibVersion -lnppi -lnppc ||
                                die "ERROR: libnpp not found"; }

This works too, but only if 'libmysofa.pc' is setup right! It needs -lm and -lz, as James already pointed out.

I believe something like this is needed:

diff --git a/libmysofa.pc.cmake b/libmysofa.pc.cmake
index f5413a9..0b2fb7a 100644
--- a/libmysofa.pc.cmake
+++ b/libmysofa.pc.cmake
@@ -8,5 +8,5 @@ libdir=${prefix}/lib
 Libs: -L${libdir} -lmysofa
 Cflags: -I${includedir}
 
-#Libs.private:
+Libs.private: @PKG_CONFIG_MATH@ @PKG_CONFIG_ZLIB@
 #Requires.private:
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index 3c3c663..3fd8224 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -14,7 +14,9 @@ configure_file (config.h.in ${PROJECT_SOURCE_DIR}/src/config.h)
 
 if(NOT MSVC)
   find_library(MATH m)
+  set(PKG_CONFIG_MATH "-lm")
   include(FindZLIB)
+  set(PKG_CONFIG_ZLIB "-lz")
 else()
   set(MATH "")
   find_program(NUGET nuget)

I'm still rather new to all of this. I don't know exactly how everything works in 'CMakeList.txt'. The set commands are obviously in the wrong place, because Libs.private: remains empty in 'libmysofa.pc'.
I have no doubt you can work this out nicely.

Cross compilation failed with current git HEAD

I am using mingw 5.0.4 with gcc 8.2.0 on Fedora 28.

Commit 494e94b worked fine, but 935c5b3 failed for me.

It seems that wrong header (in /usr/include instead of path to my cross compiler) is included.

Here is generated errors:

In file included from path/to/source/of/libmysofa/src/hrtf/reader.c:9:
/usr/include/stdio.h:71:19: error: conflicting types for 'ssize_t'
 typedef __ssize_t ssize_t;
                   ^~~~~~~
In file included from path/to/my/compiler/x86_64-w64-mingw32/include/stddef.h:7,
                 from path/to/my/compiler/lib/gcc/x86_64-w64-mingw32/8.2.0/include/stddef.h:1,
                 from path/to/source/of/libmysofa/src/hrtf/reader.c:8:
path/to/my/compiler/x86_64-w64-mingw32/include/crtdefs.h:45:35: note: previous declaration of 'ssize_t' was here
 __MINGW_EXTENSION typedef __int64 ssize_t;
                                   ^~~~~~~
In file included from /usr/include/sys/types.h:130,
                 from /usr/include/stdlib.h:394,
                 from path/to/source/of/libmysofa/src/hrtf/reader.c:10:
/usr/include/bits/types/time_t.h:7:18: error: conflicting types for 'time_t'
 typedef __time_t time_t;
                  ^~~~~~
In file included from path/to/my/compiler/x86_64-w64-mingw32/include/stddef.h:7,
                 from path/to/my/compiler/lib/gcc/x86_64-w64-mingw32/8.2.0/include/stddef.h:1,
                 from path/to/source/of/libmysofa/src/hrtf/reader.c:8:
path/to/my/compiler/x86_64-w64-mingw32/include/crtdefs.h:138:20: note: previous declaration of 'time_t' was here
 typedef __time64_t time_t;
                    ^~~~~~
In file included from /usr/include/sys/sysmacros.h:41,
                 from /usr/include/sys/types.h:205,
                 from /usr/include/stdlib.h:394,
                 from path/to/source/of/libmysofa/src/hrtf/reader.c:10:
/usr/include/sys/sysmacros.h: In function 'gnu_dev_major':
/usr/include/bits/sysmacros.h:44:57: warning: right shift count >= width of type [-Wshift-count-overflow]
     __major |= ((__dev & (__dev_t) 0xfffff00000000000u) >> 32); \
                                                         ^~
/usr/include/sys/sysmacros.h:79:1: note: in expansion of macro '__SYSMACROS_DEFINE_MAJOR'
 __SYSMACROS_DEFINE_MAJOR (__SYSMACROS_IMPL_TEMPL)
 ^~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/sys/sysmacros.h: In function 'gnu_dev_makedev':
/usr/include/bits/sysmacros.h:68:51: warning: left shift count >= width of type [-Wshift-count-overflow]
     __dev |= (((__dev_t) (__major & 0xfffff000u)) << 32); \
                                                   ^~
/usr/include/sys/sysmacros.h:81:1: note: in expansion of macro '__SYSMACROS_DEFINE_MAKEDEV'
 __SYSMACROS_DEFINE_MAKEDEV (__SYSMACROS_IMPL_TEMPL)
 ^~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from path/to/source/of/libmysofa/src/hrtf/mysofa.h:13,
                 from path/to/source/of/libmysofa/src/hrtf/reader.c:15:
/usr/include/stdint.h: At top level:
/usr/include/stdint.h:100:27: error: conflicting types for 'uintptr_t'
 typedef unsigned long int uintptr_t;
                           ^~~~~~~~~
In file included from path/to/my/compiler/x86_64-w64-mingw32/include/stddef.h:7,
                 from path/to/my/compiler/lib/gcc/x86_64-w64-mingw32/8.2.0/include/stddef.h:1,
                 from path/to/source/of/libmysofa/src/hrtf/reader.c:8:
path/to/my/compiler/x86_64-w64-mingw32/include/crtdefs.h:75:44: note: previous declaration of 'uintptr_t' was here
 __MINGW_EXTENSION typedef unsigned __int64 uintptr_t;
                                            ^~~~~~~~~
In file included from path/to/source/of/libmysofa/src/hrtf/mysofa.h:13,
                 from path/to/source/of/libmysofa/src/hrtf/reader.c:15:
/usr/include/stdint.h:116: warning: "__INT64_C" redefined
 #  define __INT64_C(c) c ## L
 
<built-in>: note: this is the location of the previous definition
In file included from path/to/source/of/libmysofa/src/hrtf/mysofa.h:13,
                 from path/to/source/of/libmysofa/src/hrtf/reader.c:15:
/usr/include/stdint.h:117: warning: "__UINT64_C" redefined
 #  define __UINT64_C(c) c ## UL
 
<built-in>: note: this is the location of the previous definition
path/to/source/of/libmysofa/src/hrtf/reader.c: In function 'readValue':
path/to/source/of/libmysofa/src/hrtf/reader.c:32:10: warning: conversion from 'long long unsigned int' to 'uint64_t' {aka 'long unsigned int'} changes value from '18446744073709551615' to '4294967295' [-Woverflow]
   return 0xffffffffffffffffLL;
          ^~~~~~~~~~~~~~~~~~~~
path/to/source/of/libmysofa/src/hrtf/reader.c:37:11: warning: conversion from 'long long unsigned int' to 'uint64_t' {aka 'long unsigned int'} changes value from '18446744073709551615' to '4294967295' [-Woverflow]
    return 0xffffffffffffffffLL;
           ^~~~~~~~~~~~~~~~~~~~
make[2]: *** [src/CMakeFiles/mysofa-static.dir/build.make:64: src/CMakeFiles/mysofa-static.dir/hrtf/reader.c.obj] Error 1
make[1]: *** [CMakeFiles/Makefile2:86: src/CMakeFiles/mysofa-static.dir/all] Error 2
make: *** [Makefile:152: all] Error 2

only export symbols declared in mysofa.h

the libmysofa.so dynamic library exports a number of symbols (e.g. all the public API).

however, it seems that there are some extra symbols are also exported, which are not part of the public API.
in order to avoid 3rd party applications to accidentally rely on these (supposedly) private symbols, they should be hidden.

stack-buffer-overflow in function directblockRead(hdf/fractalhead.c:102)

Hi, i found a stack-buffer-overflow bug in libmysofa v0.8(latest version from git), the details are below(ASAN):

/usr/local/libmysofa_ASAN/bin/mysofa2json 001-stackover 
ASAN:SIGSEGV

=================================================================
==2911==ERROR: AddressSanitizer: stack-overflow on address 0x7ffc28c24f98 (pc 0x7f4656a43568 bp 0x7ffc28c257e0 sp 0x7ffc28c24f80 T0)
    #0 0x7f4656a43567 in malloc (/usr/lib/x86_64-linux-gnu/libasan.so.2+0x98567)
    #1 0x40d0e9 in directblockRead /home/libmysofa/libmysofa_asan/libmysofa/src/hdf/fractalhead.c:102
    #2 0x40e0ec in indirectblockRead /home/libmysofa/libmysofa_asan/libmysofa/src/hdf/fractalhead.c:295
    #3 0x40f722 in fractalheapRead /home/libmysofa/libmysofa_asan/libmysofa/src/hdf/fractalhead.c:448
    #4 0x40a534 in dataobjectRead /home/libmysofa/libmysofa_asan/libmysofa/src/hdf/dataobject.c:931
    #5 0x40d8d6 in directblockRead /home/libmysofa/libmysofa_asan/libmysofa/src/hdf/fractalhead.c:201
    #6 0x40f74a in fractalheapRead /home/libmysofa/libmysofa_asan/libmysofa/src/hdf/fractalhead.c:451
    #7 0x40a626 in dataobjectRead /home/libmysofa/libmysofa_asan/libmysofa/src/hdf/dataobject.c:937
    #8 0x40d8d6 in directblockRead /home/libmysofa/libmysofa_asan/libmysofa/src/hdf/fractalhead.c:201
    #9 0x40f74a in fractalheapRead /home/libmysofa/libmysofa_asan/libmysofa/src/hdf/fractalhead.c:451
    #10 0x40a626 in dataobjectRead /home/libmysofa/libmysofa_asan/libmysofa/src/hdf/dataobject.c:937
    #11 0x40d8d6 in directblockRead /home/libmysofa/libmysofa_asan/libmysofa/src/hdf/fractalhead.c:201
    #12 0x40f74a in fractalheapRead /home/libmysofa/libmysofa_asan/libmysofa/src/hdf/fractalhead.c:451
    #13 0x40a626 in dataobjectRead /home/libmysofa/libmysofa_asan/libmysofa/src/hdf/dataobject.c:937
    #14 0x40d8d6 in directblockRead /home/libmysofa/libmysofa_asan/libmysofa/src/hdf/fractalhead.c:201
    #15 0x40f74a in fractalheapRead /home/libmysofa/libmysofa_asan/libmysofa/src/hdf/fractalhead.c:451
    #16 0x40a626 in dataobjectRead /home/libmysofa/libmysofa_asan/libmysofa/src/hdf/dataobject.c:937
    #17 0x40d8d6 in directblockRead /home/libmysofa/libmysofa_asan/libmysofa/src/hdf/fractalhead.c:201
    #18 0x40f74a in fractalheapRead /home/libmysofa/libmysofa_asan/libmysofa/src/hdf/fractalhead.c:451
    #19 0x40a626 in dataobjectRead /home/libmysofa/libmysofa_asan/libmysofa/src/hdf/dataobject.c:937
    #20 0x40d8d6 in directblockRead /home/libmysofa/libmysofa_asan/libmysofa/src/hdf/fractalhead.c:201
    #21 0x40f74a in fractalheapRead /home/libmysofa/libmysofa_asan/libmysofa/src/hdf/fractalhead.c:451
    #22 0x40a626 in dataobjectRead /home/libmysofa/libmysofa_asan/libmysofa/src/hdf/dataobject.c:937
    #23 0x40d8d6 in directblockRead /home/libmysofa/libmysofa_asan/libmysofa/src/hdf/fractalhead.c:201
    #24 0x40f74a in fractalheapRead /home/libmysofa/libmysofa_asan/libmysofa/src/hdf/fractalhead.c:451
    #25 0x40a626 in dataobjectRead /home/libmysofa/libmysofa_asan/libmysofa/src/hdf/dataobject.c:937
    #26 0x40d8d6 in directblockRead /home/libmysofa/libmysofa_asan/libmysofa/src/hdf/fractalhead.c:201
    #27 0x40f74a in fractalheapRead /home/libmysofa/libmysofa_asan/libmysofa/src/hdf/fractalhead.c:451
    #28 0x40a626 in dataobjectRead /home/libmysofa/libmysofa_asan/libmysofa/src/hdf/dataobject.c:937
    #29 0x40d8d6 in directblockRead /home/libmysofa/libmysofa_asan/libmysofa/src/hdf/fractalhead.c:201
    #30 0x40f74a in fractalheapRead /home/libmysofa/libmysofa_asan/libmysofa/src/hdf/fractalhead.c:451
    #31 0x40a626 in dataobjectRead /home/libmysofa/libmysofa_asan/libmysofa/src/hdf/dataobject.c:937
    #32 0x40d8d6 in directblockRead /home/libmysofa/libmysofa_asan/libmysofa/src/hdf/fractalhead.c:201
    #33 0x40f74a in fractalheapRead /home/libmysofa/libmysofa_asan/libmysofa/src/hdf/fractalhead.c:451
    #34 0x40a626 in dataobjectRead /home/libmysofa/libmysofa_asan/libmysofa/src/hdf/dataobject.c:937
    #35 0x40d8d6 in directblockRead /home/libmysofa/libmysofa_asan/libmysofa/src/hdf/fractalhead.c:201
    #36 0x40f74a in fractalheapRead /home/libmysofa/libmysofa_asan/libmysofa/src/hdf/fractalhead.c:451
    #37 0x40a626 in dataobjectRead /home/libmysofa/libmysofa_asan/libmysofa/src/hdf/dataobject.c:937
    #38 0x40d8d6 in directblockRead /home/libmysofa/libmysofa_asan/libmysofa/src/hdf/fractalhead.c:201
    #39 0x40f74a in fractalheapRead /home/libmysofa/libmysofa_asan/libmysofa/src/hdf/fractalhead.c:451
    #40 0x40a626 in dataobjectRead /home/libmysofa/libmysofa_asan/libmysofa/src/hdf/dataobject.c:937
    #41 0x40d8d6 in directblockRead /home/libmysofa/libmysofa_asan/libmysofa/src/hdf/fractalhead.c:201
    #42 0x40f74a in fractalheapRead /home/libmysofa/libmysofa_asan/libmysofa/src/hdf/fractalhead.c:451
    #43 0x40a626 in dataobjectRead /home/libmysofa/libmysofa_asan/libmysofa/src/hdf/dataobject.c:937
    #44 0x40d8d6 in directblockRead /home/libmysofa/libmysofa_asan/libmysofa/src/hdf/fractalhead.c:201
    #45 0x40f74a in fractalheapRead /home/libmysofa/libmysofa_asan/libmysofa/src/hdf/fractalhead.c:451
    #46 0x40a626 in dataobjectRead /home/libmysofa/libmysofa_asan/libmysofa/src/hdf/dataobject.c:937
    #47 0x40d8d6 in directblockRead /home/libmysofa/libmysofa_asan/libmysofa/src/hdf/fractalhead.c:201
    #48 0x40f74a in fractalheapRead /home/libmysofa/libmysofa_asan/libmysofa/src/hdf/fractalhead.c:451
    #49 0x40a626 in dataobjectRead /home/libmysofa/libmysofa_asan/libmysofa/src/hdf/dataobject.c:937
    #50 0x40d8d6 in directblockRead /home/libmysofa/libmysofa_asan/libmysofa/src/hdf/fractalhead.c:201
    #51 0x40f74a in fractalheapRead /home/libmysofa/libmysofa_asan/libmysofa/src/hdf/fractalhead.c:451
    #52 0x40a626 in dataobjectRead /home/libmysofa/libmysofa_asan/libmysofa/src/hdf/dataobject.c:937
    #53 0x40d8d6 in directblockRead /home/libmysofa/libmysofa_asan/libmysofa/src/hdf/fractalhead.c:201
    #54 0x40f74a in fractalheapRead /home/libmysofa/libmysofa_asan/libmysofa/src/hdf/fractalhead.c:451
    #55 0x40a626 in dataobjectRead /home/libmysofa/libmysofa_asan/libmysofa/src/hdf/dataobject.c:937
    #56 0x40d8d6 in directblockRead /home/libmysofa/libmysofa_asan/libmysofa/src/hdf/fractalhead.c:201
    #57 0x40f74a in fractalheapRead /home/libmysofa/libmysofa_asan/libmysofa/src/hdf/fractalhead.c:451
    #58 0x40a626 in dataobjectRead /home/libmysofa/libmysofa_asan/libmysofa/src/hdf/dataobject.c:937
    #59 0x40d8d6 in directblockRead /home/libmysofa/libmysofa_asan/libmysofa/src/hdf/fractalhead.c:201
    #60 0x40f74a in fractalheapRead /home/libmysofa/libmysofa_asan/libmysofa/src/hdf/fractalhead.c:451
    #61 0x40a626 in dataobjectRead /home/libmysofa/libmysofa_asan/libmysofa/src/hdf/dataobject.c:937
    #62 0x40d8d6 in directblockRead /home/libmysofa/libmysofa_asan/libmysofa/src/hdf/fractalhead.c:201
    #63 0x40f74a in fractalheapRead /home/libmysofa/libmysofa_asan/libmysofa/src/hdf/fractalhead.c:451
    #64 0x40a626 in dataobjectRead /home/libmysofa/libmysofa_asan/libmysofa/src/hdf/dataobject.c:937
    #65 0x40d8d6 in directblockRead /home/libmysofa/libmysofa_asan/libmysofa/src/hdf/fractalhead.c:201
    #66 0x40f74a in fractalheapRead /home/libmysofa/libmysofa_asan/libmysofa/src/hdf/fractalhead.c:451
    #67 0x40a626 in dataobjectRead /home/libmysofa/libmysofa_asan/libmysofa/src/hdf/dataobject.c:937
    #68 0x40d8d6 in directblockRead /home/libmysofa/libmysofa_asan/libmysofa/src/hdf/fractalhead.c:201
    #69 0x40f74a in fractalheapRead /home/libmysofa/libmysofa_asan/libmysofa/src/hdf/fractalhead.c:451
    #70 0x40a626 in dataobjectRead /home/libmysofa/libmysofa_asan/libmysofa/src/hdf/dataobject.c:937
    #71 0x40d8d6 in directblockRead /home/libmysofa/libmysofa_asan/libmysofa/src/hdf/fractalhead.c:201
    #72 0x40f74a in fractalheapRead /home/libmysofa/libmysofa_asan/libmysofa/src/hdf/fractalhead.c:451
    #73 0x40a626 in dataobjectRead /home/libmysofa/libmysofa_asan/libmysofa/src/hdf/dataobject.c:937
    #74 0x40d8d6 in directblockRead /home/libmysofa/libmysofa_asan/libmysofa/src/hdf/fractalhead.c:201
    #75 0x40f74a in fractalheapRead /home/libmysofa/libmysofa_asan/libmysofa/src/hdf/fractalhead.c:451
    #76 0x40a626 in dataobjectRead /home/libmysofa/libmysofa_asan/libmysofa/src/hdf/dataobject.c:937
    #77 0x40d8d6 in directblockRead /home/libmysofa/libmysofa_asan/libmysofa/src/hdf/fractalhead.c:201
    #78 0x40f74a in fractalheapRead /home/libmysofa/libmysofa_asan/libmysofa/src/hdf/fractalhead.c:451
    #79 0x40a626 in dataobjectRead /home/libmysofa/libmysofa_asan/libmysofa/src/hdf/dataobject.c:937
    #80 0x40d8d6 in directblockRead /home/libmysofa/libmysofa_asan/libmysofa/src/hdf/fractalhead.c:201
    #81 0x40f74a in fractalheapRead /home/libmysofa/libmysofa_asan/libmysofa/src/hdf/fractalhead.c:451
    #82 0x40a626 in dataobjectRead /home/libmysofa/libmysofa_asan/libmysofa/src/hdf/dataobject.c:937
    #83 0x40d8d6 in directblockRead /home/libmysofa/libmysofa_asan/libmysofa/src/hdf/fractalhead.c:201
    #84 0x40f74a in fractalheapRead /home/libmysofa/libmysofa_asan/libmysofa/src/hdf/fractalhead.c:451
    #85 0x40a626 in dataobjectRead /home/libmysofa/libmysofa_asan/libmysofa/src/hdf/dataobject.c:937
    #86 0x40d8d6 in directblockRead /home/libmysofa/libmysofa_asan/libmysofa/src/hdf/fractalhead.c:201
    #87 0x40f74a in fractalheapRead /home/libmysofa/libmysofa_asan/libmysofa/src/hdf/fractalhead.c:451
    #88 0x40a626 in dataobjectRead /home/libmysofa/libmysofa_asan/libmysofa/src/hdf/dataobject.c:937
    #89 0x40d8d6 in directblockRead /home/libmysofa/libmysofa_asan/libmysofa/src/hdf/fractalhead.c:201
    #90 0x40f74a in fractalheapRead /home/libmysofa/libmysofa_asan/libmysofa/src/hdf/fractalhead.c:451
    #91 0x40a626 in dataobjectRead /home/libmysofa/libmysofa_asan/libmysofa/src/hdf/dataobject.c:937
    #92 0x40d8d6 in directblockRead /home/libmysofa/libmysofa_asan/libmysofa/src/hdf/fractalhead.c:201
    #93 0x40f74a in fractalheapRead /home/libmysofa/libmysofa_asan/libmysofa/src/hdf/fractalhead.c:451
    #94 0x40a626 in dataobjectRead /home/libmysofa/libmysofa_asan/libmysofa/src/hdf/dataobject.c:937
    #95 0x40d8d6 in directblockRead /home/libmysofa/libmysofa_asan/libmysofa/src/hdf/fractalhead.c:201
    #96 0x40f74a in fractalheapRead /home/libmysofa/libmysofa_asan/libmysofa/src/hdf/fractalhead.c:451
    #97 0x40a626 in dataobjectRead /home/libmysofa/libmysofa_asan/libmysofa/src/hdf/dataobject.c:937
    #98 0x40d8d6 in directblockRead /home/libmysofa/libmysofa_asan/libmysofa/src/hdf/fractalhead.c:201
    #99 0x40f74a in fractalheapRead /home/libmysofa/libmysofa_asan/libmysofa/src/hdf/fractalhead.c:451
    #100 0x40a626 in dataobjectRead /home/libmysofa/libmysofa_asan/libmysofa/src/hdf/dataobject.c:937
    #101 0x40d8d6 in directblockRead /home/libmysofa/libmysofa_asan/libmysofa/src/hdf/fractalhead.c:201
    #102 0x40f74a in fractalheapRead /home/libmysofa/libmysofa_asan/libmysofa/src/hdf/fractalhead.c:451
    #103 0x40a626 in dataobjectRead /home/libmysofa/libmysofa_asan/libmysofa/src/hdf/dataobject.c:937
    #104 0x40d8d6 in directblockRead /home/libmysofa/libmysofa_asan/libmysofa/src/hdf/fractalhead.c:201
    #105 0x40f74a in fractalheapRead /home/libmysofa/libmysofa_asan/libmysofa/src/hdf/fractalhead.c:451
    #106 0x40a626 in dataobjectRead /home/libmysofa/libmysofa_asan/libmysofa/src/hdf/dataobject.c:937
    #107 0x40d8d6 in directblockRead /home/libmysofa/libmysofa_asan/libmysofa/src/hdf/fractalhead.c:201
    #108 0x40f74a in fractalheapRead /home/libmysofa/libmysofa_asan/libmysofa/src/hdf/fractalhead.c:451
    #109 0x40a626 in dataobjectRead /home/libmysofa/libmysofa_asan/libmysofa/src/hdf/dataobject.c:937
    #110 0x40d8d6 in directblockRead /home/libmysofa/libmysofa_asan/libmysofa/src/hdf/fractalhead.c:201
    #111 0x40f74a in fractalheapRead /home/libmysofa/libmysofa_asan/libmysofa/src/hdf/fractalhead.c:451
    #112 0x40a626 in dataobjectRead /home/libmysofa/libmysofa_asan/libmysofa/src/hdf/dataobject.c:937
    #113 0x40d8d6 in directblockRead /home/libmysofa/libmysofa_asan/libmysofa/src/hdf/fractalhead.c:201
    #114 0x40f74a in fractalheapRead /home/libmysofa/libmysofa_asan/libmysofa/src/hdf/fractalhead.c:451
    #115 0x40a626 in dataobjectRead /home/libmysofa/libmysofa_asan/libmysofa/src/hdf/dataobject.c:937
    #116 0x40d8d6 in directblockRead /home/libmysofa/libmysofa_asan/libmysofa/src/hdf/fractalhead.c:201
    #117 0x40f74a in fractalheapRead /home/libmysofa/libmysofa_asan/libmysofa/src/hdf/fractalhead.c:451
    #118 0x40a626 in dataobjectRead /home/libmysofa/libmysofa_asan/libmysofa/src/hdf/dataobject.c:937
    #119 0x40d8d6 in directblockRead /home/libmysofa/libmysofa_asan/libmysofa/src/hdf/fractalhead.c:201
    #120 0x40f74a in fractalheapRead /home/libmysofa/libmysofa_asan/libmysofa/src/hdf/fractalhead.c:451
    #121 0x40a626 in dataobjectRead /home/libmysofa/libmysofa_asan/libmysofa/src/hdf/dataobject.c:937
    #122 0x40d8d6 in directblockRead /home/libmysofa/libmysofa_asan/libmysofa/src/hdf/fractalhead.c:201
    #123 0x40f74a in fractalheapRead /home/libmysofa/libmysofa_asan/libmysofa/src/hdf/fractalhead.c:451
    #124 0x40a626 in dataobjectRead /home/libmysofa/libmysofa_asan/libmysofa/src/hdf/dataobject.c:937
    #125 0x40d8d6 in directblockRead /home/libmysofa/libmysofa_asan/libmysofa/src/hdf/fractalhead.c:201
    #126 0x40f74a in fractalheapRead /home/libmysofa/libmysofa_asan/libmysofa/src/hdf/fractalhead.c:451
    #127 0x40a626 in dataobjectRead /home/libmysofa/libmysofa_asan/libmysofa/src/hdf/dataobject.c:937
    #128 0x40d8d6 in directblockRead /home/libmysofa/libmysofa_asan/libmysofa/src/hdf/fractalhead.c:201
    #129 0x40f74a in fractalheapRead /home/libmysofa/libmysofa_asan/libmysofa/src/hdf/fractalhead.c:451
    #130 0x40a626 in dataobjectRead /home/libmysofa/libmysofa_asan/libmysofa/src/hdf/dataobject.c:937
    #131 0x40d8d6 in directblockRead /home/libmysofa/libmysofa_asan/libmysofa/src/hdf/fractalhead.c:201
    #132 0x40f74a in fractalheapRead /home/libmysofa/libmysofa_asan/libmysofa/src/hdf/fractalhead.c:451
    #133 0x40a626 in dataobjectRead /home/libmysofa/libmysofa_asan/libmysofa/src/hdf/dataobject.c:937
    #134 0x40d8d6 in directblockRead /home/libmysofa/libmysofa_asan/libmysofa/src/hdf/fractalhead.c:201
    #135 0x40f74a in fractalheapRead /home/libmysofa/libmysofa_asan/libmysofa/src/hdf/fractalhead.c:451
    #136 0x40a626 in dataobjectRead /home/libmysofa/libmysofa_asan/libmysofa/src/hdf/dataobject.c:937
    #137 0x40d8d6 in directblockRead /home/libmysofa/libmysofa_asan/libmysofa/src/hdf/fractalhead.c:201
    #138 0x40f74a in fractalheapRead /home/libmysofa/libmysofa_asan/libmysofa/src/hdf/fractalhead.c:451
    #139 0x40a626 in dataobjectRead /home/libmysofa/libmysofa_asan/libmysofa/src/hdf/dataobject.c:937
    #140 0x40d8d6 in directblockRead /home/libmysofa/libmysofa_asan/libmysofa/src/hdf/fractalhead.c:201
    #141 0x40f74a in fractalheapRead /home/libmysofa/libmysofa_asan/libmysofa/src/hdf/fractalhead.c:451
    #142 0x40a626 in dataobjectRead /home/libmysofa/libmysofa_asan/libmysofa/src/hdf/dataobject.c:937
    #143 0x40d8d6 in directblockRead /home/libmysofa/libmysofa_asan/libmysofa/src/hdf/fractalhead.c:201
    #144 0x40f74a in fractalheapRead /home/libmysofa/libmysofa_asan/libmysofa/src/hdf/fractalhead.c:451
    #145 0x40a626 in dataobjectRead /home/libmysofa/libmysofa_asan/libmysofa/src/hdf/dataobject.c:937
    #146 0x40d8d6 in directblockRead /home/libmysofa/libmysofa_asan/libmysofa/src/hdf/fractalhead.c:201
    #147 0x40f74a in fractalheapRead /home/libmysofa/libmysofa_asan/libmysofa/src/hdf/fractalhead.c:451
    #148 0x40a626 in dataobjectRead /home/libmysofa/libmysofa_asan/libmysofa/src/hdf/dataobject.c:937
    #149 0x40d8d6 in directblockRead /home/libmysofa/libmysofa_asan/libmysofa/src/hdf/fractalhead.c:201
    #150 0x40f74a in fractalheapRead /home/libmysofa/libmysofa_asan/libmysofa/src/hdf/fractalhead.c:451
    #151 0x40a626 in dataobjectRead /home/libmysofa/libmysofa_asan/libmysofa/src/hdf/dataobject.c:937
    #152 0x40d8d6 in directblockRead /home/libmysofa/libmysofa_asan/libmysofa/src/hdf/fractalhead.c:201
    #153 0x40f74a in fractalheapRead /home/libmysofa/libmysofa_asan/libmysofa/src/hdf/fractalhead.c:451
    #154 0x40a626 in dataobjectRead /home/libmysofa/libmysofa_asan/libmysofa/src/hdf/dataobject.c:937
    #155 0x40d8d6 in directblockRead /home/libmysofa/libmysofa_asan/libmysofa/src/hdf/fractalhead.c:201
    #156 0x40f74a in fractalheapRead /home/libmysofa/libmysofa_asan/libmysofa/src/hdf/fractalhead.c:451
    #157 0x40a626 in dataobjectRead /home/libmysofa/libmysofa_asan/libmysofa/src/hdf/dataobject.c:937
    #158 0x40d8d6 in directblockRead /home/libmysofa/libmysofa_asan/libmysofa/src/hdf/fractalhead.c:201
    #159 0x40f74a in fractalheapRead /home/libmysofa/libmysofa_asan/libmysofa/src/hdf/fractalhead.c:451
    #160 0x40a626 in dataobjectRead /home/libmysofa/libmysofa_asan/libmysofa/src/hdf/dataobject.c:937
    #161 0x40d8d6 in directblockRead /home/libmysofa/libmysofa_asan/libmysofa/src/hdf/fractalhead.c:201
    #162 0x40f74a in fractalheapRead /home/libmysofa/libmysofa_asan/libmysofa/src/hdf/fractalhead.c:451
    #163 0x40a626 in dataobjectRead /home/libmysofa/libmysofa_asan/libmysofa/src/hdf/dataobject.c:937
    #164 0x40d8d6 in directblockRead /home/libmysofa/libmysofa_asan/libmysofa/src/hdf/fractalhead.c:201
    #165 0x40f74a in fractalheapRead /home/libmysofa/libmysofa_asan/libmysofa/src/hdf/fractalhead.c:451
    #166 0x40a626 in dataobjectRead /home/libmysofa/libmysofa_asan/libmysofa/src/hdf/dataobject.c:937
    #167 0x40d8d6 in directblockRead /home/libmysofa/libmysofa_asan/libmysofa/src/hdf/fractalhead.c:201
    #168 0x40f74a in fractalheapRead /home/libmysofa/libmysofa_asan/libmysofa/src/hdf/fractalhead.c:451
    #169 0x40a626 in dataobjectRead /home/libmysofa/libmysofa_asan/libmysofa/src/hdf/dataobject.c:937
    #170 0x40d8d6 in directblockRead /home/libmysofa/libmysofa_asan/libmysofa/src/hdf/fractalhead.c:201
    #171 0x40f74a in fractalheapRead /home/libmysofa/libmysofa_asan/libmysofa/src/hdf/fractalhead.c:451
    #172 0x40a626 in dataobjectRead /home/libmysofa/libmysofa_asan/libmysofa/src/hdf/dataobject.c:937
    #173 0x40d8d6 in directblockRead /home/libmysofa/libmysofa_asan/libmysofa/src/hdf/fractalhead.c:201
    #174 0x40f74a in fractalheapRead /home/libmysofa/libmysofa_asan/libmysofa/src/hdf/fractalhead.c:451
    #175 0x40a626 in dataobjectRead /home/libmysofa/libmysofa_asan/libmysofa/src/hdf/dataobject.c:937
    #176 0x40d8d6 in directblockRead /home/libmysofa/libmysofa_asan/libmysofa/src/hdf/fractalhead.c:201
    #177 0x40f74a in fractalheapRead /home/libmysofa/libmysofa_asan/libmysofa/src/hdf/fractalhead.c:451
    #178 0x40a626 in dataobjectRead /home/libmysofa/libmysofa_asan/libmysofa/src/hdf/dataobject.c:937
    #179 0x40d8d6 in directblockRead /home/libmysofa/libmysofa_asan/libmysofa/src/hdf/fractalhead.c:201
    #180 0x40f74a in fractalheapRead /home/libmysofa/libmysofa_asan/libmysofa/src/hdf/fractalhead.c:451
    #181 0x40a626 in dataobjectRead /home/libmysofa/libmysofa_asan/libmysofa/src/hdf/dataobject.c:937
    #182 0x40d8d6 in directblockRead /home/libmysofa/libmysofa_asan/libmysofa/src/hdf/fractalhead.c:201
    #183 0x40f74a in fractalheapRead /home/libmysofa/libmysofa_asan/libmysofa/src/hdf/fractalhead.c:451
    #184 0x40a626 in dataobjectRead /home/libmysofa/libmysofa_asan/libmysofa/src/hdf/dataobject.c:937
    #185 0x40d8d6 in directblockRead /home/libmysofa/libmysofa_asan/libmysofa/src/hdf/fractalhead.c:201
    #186 0x40f74a in fractalheapRead /home/libmysofa/libmysofa_asan/libmysofa/src/hdf/fractalhead.c:451
    #187 0x40a626 in dataobjectRead /home/libmysofa/libmysofa_asan/libmysofa/src/hdf/dataobject.c:937
    #188 0x40d8d6 in directblockRead /home/libmysofa/libmysofa_asan/libmysofa/src/hdf/fractalhead.c:201
    #189 0x40f74a in fractalheapRead /home/libmysofa/libmysofa_asan/libmysofa/src/hdf/fractalhead.c:451
    #190 0x40a626 in dataobjectRead /home/libmysofa/libmysofa_asan/libmysofa/src/hdf/dataobject.c:937
    #191 0x40d8d6 in directblockRead /home/libmysofa/libmysofa_asan/libmysofa/src/hdf/fractalhead.c:201
    #192 0x40f74a in fractalheapRead /home/libmysofa/libmysofa_asan/libmysofa/src/hdf/fractalhead.c:451
    #193 0x40a626 in dataobjectRead /home/libmysofa/libmysofa_asan/libmysofa/src/hdf/dataobject.c:937
    #194 0x40d8d6 in directblockRead /home/libmysofa/libmysofa_asan/libmysofa/src/hdf/fractalhead.c:201
    #195 0x40f74a in fractalheapRead /home/libmysofa/libmysofa_asan/libmysofa/src/hdf/fractalhead.c:451
    #196 0x40a626 in dataobjectRead /home/libmysofa/libmysofa_asan/libmysofa/src/hdf/dataobject.c:937
    #197 0x40d8d6 in directblockRead /home/libmysofa/libmysofa_asan/libmysofa/src/hdf/fractalhead.c:201
    #198 0x40f74a in fractalheapRead /home/libmysofa/libmysofa_asan/libmysofa/src/hdf/fractalhead.c:451
    #199 0x40a626 in dataobjectRead /home/libmysofa/libmysofa_asan/libmysofa/src/hdf/dataobject.c:937
    #200 0x40d8d6 in directblockRead /home/libmysofa/libmysofa_asan/libmysofa/src/hdf/fractalhead.c:201
    #201 0x40f74a in fractalheapRead /home/libmysofa/libmysofa_asan/libmysofa/src/hdf/fractalhead.c:451
    #202 0x40a626 in dataobjectRead /home/libmysofa/libmysofa_asan/libmysofa/src/hdf/dataobject.c:937
    #203 0x40d8d6 in directblockRead /home/libmysofa/libmysofa_asan/libmysofa/src/hdf/fractalhead.c:201
    #204 0x40f74a in fractalheapRead /home/libmysofa/libmysofa_asan/libmysofa/src/hdf/fractalhead.c:451
    #205 0x40a626 in dataobjectRead /home/libmysofa/libmysofa_asan/libmysofa/src/hdf/dataobject.c:937
    #206 0x40d8d6 in directblockRead /home/libmysofa/libmysofa_asan/libmysofa/src/hdf/fractalhead.c:201
    #207 0x40f74a in fractalheapRead /home/libmysofa/libmysofa_asan/libmysofa/src/hdf/fractalhead.c:451
    #208 0x40a626 in dataobjectRead /home/libmysofa/libmysofa_asan/libmysofa/src/hdf/dataobject.c:937
    #209 0x40d8d6 in directblockRead /home/libmysofa/libmysofa_asan/libmysofa/src/hdf/fractalhead.c:201
    #210 0x40f74a in fractalheapRead /home/libmysofa/libmysofa_asan/libmysofa/src/hdf/fractalhead.c:451
    #211 0x40a626 in dataobjectRead /home/libmysofa/libmysofa_asan/libmysofa/src/hdf/dataobject.c:937
    #212 0x40d8d6 in directblockRead /home/libmysofa/libmysofa_asan/libmysofa/src/hdf/fractalhead.c:201
    #213 0x40f74a in fractalheapRead /home/libmysofa/libmysofa_asan/libmysofa/src/hdf/fractalhead.c:451
    #214 0x40a626 in dataobjectRead /home/libmysofa/libmysofa_asan/libmysofa/src/hdf/dataobject.c:937
    #215 0x40d8d6 in directblockRead /home/libmysofa/libmysofa_asan/libmysofa/src/hdf/fractalhead.c:201
    #216 0x40f74a in fractalheapRead /home/libmysofa/libmysofa_asan/libmysofa/src/hdf/fractalhead.c:451
    #217 0x40a626 in dataobjectRead /home/libmysofa/libmysofa_asan/libmysofa/src/hdf/dataobject.c:937
    #218 0x40d8d6 in directblockRead /home/libmysofa/libmysofa_asan/libmysofa/src/hdf/fractalhead.c:201
    #219 0x40f74a in fractalheapRead /home/libmysofa/libmysofa_asan/libmysofa/src/hdf/fractalhead.c:451
    #220 0x40a626 in dataobjectRead /home/libmysofa/libmysofa_asan/libmysofa/src/hdf/dataobject.c:937
    #221 0x40d8d6 in directblockRead /home/libmysofa/libmysofa_asan/libmysofa/src/hdf/fractalhead.c:201
    #222 0x40f74a in fractalheapRead /home/libmysofa/libmysofa_asan/libmysofa/src/hdf/fractalhead.c:451
    #223 0x40a626 in dataobjectRead /home/libmysofa/libmysofa_asan/libmysofa/src/hdf/dataobject.c:937
    #224 0x40d8d6 in directblockRead /home/libmysofa/libmysofa_asan/libmysofa/src/hdf/fractalhead.c:201
    #225 0x40f74a in fractalheapRead /home/libmysofa/libmysofa_asan/libmysofa/src/hdf/fractalhead.c:451
    #226 0x40a626 in dataobjectRead /home/libmysofa/libmysofa_asan/libmysofa/src/hdf/dataobject.c:937
    #227 0x40d8d6 in directblockRead /home/libmysofa/libmysofa_asan/libmysofa/src/hdf/fractalhead.c:201
    #228 0x40f74a in fractalheapRead /home/libmysofa/libmysofa_asan/libmysofa/src/hdf/fractalhead.c:451
    #229 0x40a626 in dataobjectRead /home/libmysofa/libmysofa_asan/libmysofa/src/hdf/dataobject.c:937
    #230 0x40d8d6 in directblockRead /home/libmysofa/libmysofa_asan/libmysofa/src/hdf/fractalhead.c:201
    #231 0x40f74a in fractalheapRead /home/libmysofa/libmysofa_asan/libmysofa/src/hdf/fractalhead.c:451
    #232 0x40a626 in dataobjectRead /home/libmysofa/libmysofa_asan/libmysofa/src/hdf/dataobject.c:937
    #233 0x40d8d6 in directblockRead /home/libmysofa/libmysofa_asan/libmysofa/src/hdf/fractalhead.c:201
    #234 0x40f74a in fractalheapRead /home/libmysofa/libmysofa_asan/libmysofa/src/hdf/fractalhead.c:451
    #235 0x40a626 in dataobjectRead /home/libmysofa/libmysofa_asan/libmysofa/src/hdf/dataobject.c:937
    #236 0x40d8d6 in directblockRead /home/libmysofa/libmysofa_asan/libmysofa/src/hdf/fractalhead.c:201
    #237 0x40f74a in fractalheapRead /home/libmysofa/libmysofa_asan/libmysofa/src/hdf/fractalhead.c:451
    #238 0x40a626 in dataobjectRead /home/libmysofa/libmysofa_asan/libmysofa/src/hdf/dataobject.c:937
    #239 0x40d8d6 in directblockRead /home/libmysofa/libmysofa_asan/libmysofa/src/hdf/fractalhead.c:201
    #240 0x40f74a in fractalheapRead /home/libmysofa/libmysofa_asan/libmysofa/src/hdf/fractalhead.c:451
    #241 0x40a626 in dataobjectRead /home/libmysofa/libmysofa_asan/libmysofa/src/hdf/dataobject.c:937
    #242 0x40d8d6 in directblockRead /home/libmysofa/libmysofa_asan/libmysofa/src/hdf/fractalhead.c:201
    #243 0x40f74a in fractalheapRead /home/libmysofa/libmysofa_asan/libmysofa/src/hdf/fractalhead.c:451
    #244 0x40a626 in dataobjectRead /home/libmysofa/libmysofa_asan/libmysofa/src/hdf/dataobject.c:937
    #245 0x40d8d6 in directblockRead /home/libmysofa/libmysofa_asan/libmysofa/src/hdf/fractalhead.c:201
    #246 0x40f74a in fractalheapRead /home/libmysofa/libmysofa_asan/libmysofa/src/hdf/fractalhead.c:451
    #247 0x40a626 in dataobjectRead /home/libmysofa/libmysofa_asan/libmysofa/src/hdf/dataobject.c:937
    #248 0x40d8d6 in directblockRead /home/libmysofa/libmysofa_asan/libmysofa/src/hdf/fractalhead.c:201
    #249 0x40f74a in fractalheapRead /home/libmysofa/libmysofa_asan/libmysofa/src/hdf/fractalhead.c:451
    #250 0x40a626 in dataobjectRead /home/libmysofa/libmysofa_asan/libmysofa/src/hdf/dataobject.c:937
    #251 0x40d8d6 in directblockRead /home/libmysofa/libmysofa_asan/libmysofa/src/hdf/fractalhead.c:201

SUMMARY: AddressSanitizer: stack-overflow ??:0 malloc
==2911==ABORTING

POC FILE:https://github.com/fantasy7082/image_test/blob/master/001-stackover-libmysofa

mysofa_open loading freezes: infinite while loop in kdtree clear_results() method

Description

Successive loading of various sofa HRIR files in an audio plugin. Loading goes smooth for the first 10 to 20+ loadings (user interaction based), then will freeze while trying to load a file. Not a specific file, usually just going back and forth on 2-3 HRIRs (loading successfully otherwise) will produce the freeze at some point.

Detail

Freeze occurs in clear_results(...) method of kdtree.c, during the while loop:

while (node) {
    tmp = node;
    node = node->next;
    free_resnode(tmp);
}

Every time I reached the frozen state, node->next and free_nodes were always equal (and not NULL), hence in free_resnode(...) the

node->next = free_nodes;
free_nodes = node;

double lines eventually led to a node which next attribute was itself (and so forth). The while(node) condition of the clear_results(...) method thus was never fulfilled, hence the infinite loop.

If ever it rings a bell somewhere, I'll take it. Sorry I was not able to produce a minimalist test scenario.

No longer able to cross compile with Mingw after ea9ce56

I'm unable to cross compile with Mingw after ea9ce56:

CMake Error: The following variables are used in this project, but they are set to NOTFOUND. Please set them or make sure they are set and tested correctly in the CMake files: MATH

This is due to find_library(MATH m), which should not be used for WIN32 targets.

libccd also ran into this issue: danfis/libccd#2

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.