[pdal] seg-fault when compressing zero points with lazperf

Andrew Bell andrew.bell.ia at gmail.com
Wed Jan 19 12:31:19 PST 2022


I think this is now fixed in master. If you're still having issues, you
should create an issue. thanks.

On Tue, Jan 18, 2022 at 3:05 PM Jim Klassen <klassen.js at gmail.com> wrote:

> I noticed another related but likely different issue too.  It looks like
> zero point laz files made with pdal are invalid (compressed with laszip or
> lazperf w/patch).  Zero point las files appear OK.
>
> $ pdal translate lasperf.fail.txt lasperf.fail.las
> $ pdal translate lasperf.fail.txt lasperf.fail.laz
> --writers.las.compression=laszip
>
> $ ls -l lasperf.fail.la?
> -rw-r--r-- 1 jimk jimk 227 Jan 18 08:53 lasperf.fail.las
> -rw-r--r-- 1 jimk jimk 349 Jan 18 08:54 lasperf.fail.laz
>
> $ pdal info lasperf.fail.laz
> PDAL: Unexpected end of file.
>
> $ pdal info lasperf.fail.las
> {
>   "file_size": 227,
>   "filename": "lasperf.fail.las",
>   "now": "2022-01-18T08:53:14-0600",
>   "pdal_version": "2.3.0 (git-version: ac8068)",
>   "reader": "readers.las",
>   "stats":
>   {
>     "statistic":
>     [
>       {
>         "average": 0,
>         "count": 0,
>         "maximum": -1.797693135e+308,
>         "minimum": 1.797693135e+308,
>         "name": "X",
>         "position": 0,
>         "stddev": 0,
>         "variance": 0
>       },
> ...
>
> On 1/18/22 08:54, Andrew Bell wrote:
>
> Trying again... here's the ticket...
> https://github.com/PDAL/PDAL/issues/3652
>
> On Tue, Jan 18, 2022 at 9:54 AM Andrew Bell <andrew.bell.ia at gmail.com>
> wrote:
>
>> Here's the ticket...
>>
>> On Tue, Jan 18, 2022 at 9:52 AM Andrew Bell <andrew.bell.ia at gmail.com>
>> wrote:
>>
>>> I've already fixed this, but I can't locate the PR right now. I'll write
>>> again when I find it.
>>>
>>> On Tue, Jan 18, 2022 at 9:48 AM Jim Klassen <klassen.js at gmail.com>
>>> wrote:
>>>
>>>> It appears there is a seg-fault in pdal when compressing a file with
>>>> zero points with lazperf.  Using laszip correctly creates an empty laz
>>>> file.  With at least one point into the source file both laszip and lazperf
>>>> work as expected.
>>>>
>>>> My guess is LazPerfVlrCompressorImpl::compress() is never getting
>>>> called, so m_compressor is null, but that condition isn't being checked in
>>>> LazPerfVlrCompressorImpl::done() before calling m_compress->done().  I'm
>>>> not sure how much of LazPerfVlrCompressorImpl::done() should be skipped if
>>>> m_compressor is null (there were no points to process).
>>>>
>>>>
>>>> liblaszip: 3.4.1-6-gc7b67ca
>>>> laz-perf: 3.0.0-1-g03ed832
>>>> pdal: ac8068c7d
>>>>
>>>>
>>>> $ cat lasperf.fail.txt
>>>> X,Y,Z
>>>>
>>>> $ pdal info lasperf.fail.txt
>>>> {
>>>>    "file_size": 7,
>>>>    "filename": "lasperf.fail.txt",
>>>>    "now": "2022-01-18T08:19:08-0600",
>>>>    "pdal_version": "2.3.0 (git-version: ac8068)",
>>>>    "reader": "readers.text",
>>>>    "stats":
>>>>    {
>>>>      "statistic":
>>>>      [
>>>>        {
>>>>          "average": 0,
>>>>          "count": 0,
>>>>          "maximum": -1.797693135e+308,
>>>>          "minimum": 1.797693135e+308,
>>>>          "name": "X",
>>>>          "position": 0,
>>>>          "stddev": 0,
>>>>          "variance": 0
>>>>        },
>>>>        {
>>>>          "average": 0,
>>>>          "count": 0,
>>>>          "maximum": -1.797693135e+308,
>>>>          "minimum": 1.797693135e+308,
>>>>          "name": "Y",
>>>>          "position": 1,
>>>>          "stddev": 0,
>>>>          "variance": 0
>>>>        },
>>>>        {
>>>>          "average": 0,
>>>>          "count": 0,
>>>>          "maximum": -1.797693135e+308,
>>>>          "minimum": 1.797693135e+308,
>>>>          "name": "Z",
>>>>          "position": 2,
>>>>          "stddev": 0,
>>>>          "variance": 0
>>>>        }
>>>>      ]
>>>>    }
>>>> }
>>>> $ pdal translate lasperf.fail.txt lasperf.fail.laz
>>>> --writers.las.compression=laszip
>>>> $ pdal translate lasperf.fail.txt lasperf.fail.laz
>>>> --writers.las.compression=lazperf
>>>> Segmentation fault
>>>> $ gdb --args pdal translate lasperf.fail.txt lasperf.fail.laz
>>>> --writers.las.compression=lazperf
>>>> GNU gdb (Debian 10.1-1.7) 10.1.90.20210103-git
>>>> Copyright (C) 2021 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:
>>>> <https://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 pdal...
>>>> (No debugging symbols found in pdal)
>>>> (gdb) run
>>>> Starting program:
>>>> /apps/PointClouds/pdal/2.3.0-ac8068c7d-laszip/bin/pdal translate
>>>> lasperf.fail.txt lasperf.fail.laz --writers.las.compression=lazperf
>>>> [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.
>>>> 0x00007ffff7e0c4d9 in pdal::LazPerfVlrCompressorImpl::done
>>>> (this=0x4c2ea0)
>>>>      at
>>>> /apps/PointClouds/pdal/src/pdal/pdal/compression/LazPerfVlrCompression.cpp:101
>>>> 101            m_compressor->done();
>>>> (gdb) print m_compressor
>>>> $1 = std::shared_ptr<lazperf::las_compressor> (empty) = {get() = 0x0}
>>>> (gdb) quit
>>>> A debugging session is active.
>>>>
>>>>      Inferior 1 [process 283225] will be killed.
>>>>
>>>> Quit anyway? (y or n) y
>>>> $
>>>>
>>>> _______________________________________________
>>>> pdal mailing list
>>>> pdal at lists.osgeo.org
>>>> https://lists.osgeo.org/mailman/listinfo/pdal
>>>>
>>>
>>>
>>> --
>>> Andrew Bell
>>> andrew.bell.ia at gmail.com
>>>
>>
>>
>> --
>> Andrew Bell
>> andrew.bell.ia at gmail.com
>>
>
>
> --
> Andrew Bell
> andrew.bell.ia at gmail.com
>
>
>

-- 
Andrew Bell
andrew.bell.ia at gmail.com
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osgeo.org/pipermail/pdal/attachments/20220119/143cf186/attachment.html>


More information about the pdal mailing list