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

Jim Klassen klassen.js at gmail.com
Thu Jan 20 12:15:10 PST 2022


The seg-fault is fixed.

The second issue still exists.  I'll make a github issue for it.

Thanks!

On 1/19/22 14:31, Andrew Bell wrote:
> 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 <http://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/20220120/f9a7398d/attachment.html>


More information about the pdal mailing list