setsmdeveloper / SETSM

The Surface Extraction from TIN-based Searchspace Minimization (SETSM) software is a fully automatic algorithm for deriving Digital Terrain Models (DTM) from pairs of satellite imagery.
Apache License 2.0
64 stars 19 forks source link

Inconsistent `terminated by signal SIGSEGV (Address boundary error)` messages #13

Open liamtoney opened 2 months ago

liamtoney commented 2 months ago

I've installed SETSM on an Apple MacBook Pro w/ M2 Max chip (32 GB memory). I had to make edits to the Makefile to do this (see bottom of message), but they were limited to pointing to the correct dependencies — and after making the changes, the code appeared to compile correctly (e.g., the setsm -help command runs as expected after installation).

setsm runs inconsistently on my machine. Sometimes, it will complete a run with no errors. Other times, it will fail, always with the same error:

terminated by signal SIGSEGV (Address boundary error)

Example command that causes failure (sometimes):

-image ../23APR17020120-P1BS-016359594010_01_P001.TIF -image ../23APR17020206-P1BS-016359594010_01_P001.TIF -outpath test_output  -outres 20 -tilesize 1000

I'm trying to understand if this is related to the Apple silicon hardware, which would be understandable, or if this is a bug encountered on other platforms. Any ideas? Thanks in advance.

Edits made to the Makefile ```diff diff --git a/Makefile b/Makefile index fb1ec48..73e87cb 100755 --- a/Makefile +++ b/Makefile @@ -4,21 +4,22 @@ # If libtiff is installed in a nonstandard location you must edit # TIFFPATH and uncomment the following three lines. -TIFFPATH?=/home/noh.56/software/tiff-4.0.3 +TIFFPATH?=/opt/homebrew/Cellar/libtiff/4.6.0 TIFFINC?=-I$(TIFFPATH)/include TIFFLIB?=-L$(TIFFPATH)/lib # If libgeotiff is installed in a nonstandard location you must edit # GEOTIFFPATH and uncomment the following three lines. -GEOTIFFPATH?=/home/noh.56/software/libgeotiff-1.4.2 +GEOTIFFPATH?=/opt/homebrew/Cellar/libgeotiff/1.7.1_3 GEOTIFFINC?=-I$(GEOTIFFPATH)/include GEOTIFFLIB?=-L$(GEOTIFFPATH)/lib -PROJLIB?=-L/home/noh.56/software/proj-5.1.0/lib +PROJLIB?=-L/opt/homebrew/Cellar/proj/9.4.0/lib +JPEGLIB?=-L/opt/homebrew/Cellar/jpeg-turbo/3.0.3/lib MPIFLAGS = -DBUILDMPI INCS = $(TIFFINC) $(GEOTIFFINC) -LDFLAGS = $(TIFFLIB) $(GEOTIFFLIB) +LDFLAGS = $(TIFFLIB) $(GEOTIFFLIB) $(PROJLIB) $(JPEGLIB) COMMON_OBJS = CoordConversion.o SubFunctions.o LSF.o Orthogeneration.o Coregistration.o SDM.o setsmgeo.o grid.o grid_triangulation.o edge_list.o MPI_OBJS = $(COMMON_OBJS) log_mpi.o @@ -61,8 +62,8 @@ else ifeq ($(COMPILER), nvhpc) CFLAGS= CXXFLAGS= else - CC=gcc - CXX=g++ + CC=gcc-13 + CXX=g++-13 MPICC=mpicc MPICXX=mpicxx CFLAGS=-std=c99 -g -O3 -fopenmp ```
liamtoney commented 2 months ago

I'm not seeing the above error on the Linux cluster I'm running the code on, so I imagine this is indeed likely due to Apple silicon specifics. Please feel free to close this issue — it seems like while it's possible to run SETSM on Apple silicon, it's a bit of a stretch.