PointCloudLibrary / pcl

Point Cloud Library (PCL)
https://pointclouds.org/
Other
9.98k stars 4.62k forks source link

Brisk 2D segfaults #1517

Open VictorLamoine opened 8 years ago

VictorLamoine commented 8 years ago

Reported on the mailing-list.

My CPU info (supports SSE 4.1 and SSE 4.2):

$ cat /proc/cpuinfo
processor   : 0
vendor_id   : GenuineIntel
cpu family  : 6
model       : 58
model name  : Intel(R) Core(TM) i7-3740QM CPU @ 2.70GHz
stepping    : 9
microcode   : 0x19
cpu MHz     : 1294.101
cache size  : 6144 KB
physical id : 0
siblings    : 8
core id     : 0
cpu cores   : 4
apicid      : 0
initial apicid  : 0
fpu     : yes
fpu_exception   : yes
cpuid level : 13
wp      : yes
flags       : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx rdtscp lm constant_tsc arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc aperfmperf eagerfpu pni pclmulqdq dtes64 monitor ds_cpl vmx smx est tm2 ssse3 cx16 xtpr pdcm pcid sse4_1 sse4_2 x2apic popcnt tsc_deadline_timer aes xsave avx f16c rdrand lahf_lm ida arat epb xsaveopt pln pts dtherm tpr_shadow vnmi flexpriority ept vpid fsgsbase smep erms
bogomips    : 5382.66
clflush size    : 64
cache_alignment : 64
address sizes   : 36 bits physical, 48 bits virtual
power management:

Example program output (see mailing-list for the example data)

$ ./test_pcl_1 -target cloud1.pcd -source cloud2.pcd
Target points number : 217088
Source points number : 217088
brisk without SSE4.1 support not implementedbrisk without SSE4.1 support not implementedbrisk without SSE4.1 support not implementedbrisk without SSE4.1 support not implementedbrisk without SSE4.1 support not implementedbrisk without SSE4.1 support not implementedbrisk without SSE4.1 support not implementedbrisk without SSE4.1 support not implementedbrisk without SSE4.1 support not implementedbrisk without SSE4.1 support not implementedbrisk without SSE4.1 support not implementedbrisk without SSE4.1 support not implementedbrisk without SSE4.1 support not implementedbrisk without SSE4.1 support not implementedTarget keypoints number : 912
Source keypoints number : 905
Target descriptor number : 813
Source descriptor number : 827
Erreur de segmentation (core dumped)

More debug info is available on the mailing-list.

taketwo commented 8 years ago

What about removing this class from the build if SSE is not supported? I.e. conditionally exclude corresponding .h/.cpp files in CMake script. SSE3 and SSE4 detection is broken for me as well.

SergioRAgostinho commented 8 years ago

SSE version checking doesn't work on Linux.

Maybe go with a similar strategy as proposed here.

What about removing this class from the build if SSE is not supported? I.e. conditionally exclude corresponding .h/.cpp files in CMake script.

Given that the class becomes useless, totally agree.

jspricke commented 8 years ago

I would propose to add a #error brisk without SSE4.1 support not implemented so compilation fails. That way we don't provide different headers depending on the host system.

taketwo commented 8 years ago

But we don't want compilation of the whole library to fail on non-SSE4.1 systems?

jspricke commented 8 years ago

No, only when using the method in question, as in #1522 ;).

jspricke commented 8 years ago

Just found that it's actually in the .cpp file. So not installing the header seems to be the correct way, as taketwo proposed.

taketwo commented 8 years ago

We can also have an ifndef at the top of the header file testing if corresponding HAVE_* macros are defined by CMake and giving #error if not. What is the preferred approach?

stale[bot] commented 4 years ago

Marking this as stale due to 30 days of inactivity. It will be closed in 7 days if no further activity occurs.

kunaltyagi commented 4 years ago

Is this still something to be added on todo list or has this been resolved?