Bug 7628

Summary: Poppler 0.5.3 crashes with gcc-option -ftree-vectorize
Product: poppler Reporter: Mathy Vanvoorden <matje>
Component: generalAssignee: poppler-bugs <poppler-bugs>
Status: RESOLVED INVALID QA Contact:
Severity: normal    
Priority: medium    
Version: unspecified   
Hardware: x86 (IA32)   
OS: Linux (All)   
Whiteboard:
i915 platform: i915 features:

Description Mathy Vanvoorden 2006-07-26 00:30:40 UTC
As asked in the following url, I am posting this bug here:

http://bugs.gentoo.org/show_bug.cgi?id=141676

As stated in the bug, running kpdf in gdb gives me this issue:

Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread -1235354704 (LWP 3544)]
0xb67b78bd in OutputDev::setDefaultCTM () from /usr/lib/libpoppler.so.1

I am not sure whether this is a poppler, or a gcc issue. gcc info:

matje@sidonia /home/matje $ gcc -v
Using built-in specs.
Target: i686-pc-linux-gnu
Configured with: /var/tmp/portage/gcc-4.1.1/work/gcc-4.1.1/configure
--prefix=/usr --bindir=/usr/i686-pc-linux-gnu/gcc-bin/4.1.1
--includedir=/usr/lib/gcc/i686-pc-linux-gnu/4.1.1/include
--datadir=/usr/share/gcc-data/i686-pc-linux-gnu/4.1.1
--mandir=/usr/share/gcc-data/i686-pc-linux-gnu/4.1.1/man
--infodir=/usr/share/gcc-data/i686-pc-linux-gnu/4.1.1/info
--with-gxx-include-dir=/usr/lib/gcc/i686-pc-linux-gnu/4.1.1/include/g++-v4
--host=i686-pc-linux-gnu --build=i686-pc-linux-gnu --disable-altivec
--disable-nls --with-system-zlib --disable-checking --disable-werror
--disable-libunwind-exceptions --disable-multilib --disable-libmudflap
--disable-libssp --disable-libgcj --enable-languages=c,c++,fortran
--enable-shared --enable-threads=posix --enable-__cxa_atexit --enable-clocale=gnu
Thread model: posix
gcc version 4.1.1 (Gentoo 4.1.1)

I'm happy to do any testing for you to resolve this issue.
Comment 1 Mathy Vanvoorden 2006-07-26 02:59:36 UTC
After looking around a bit, it seems the problem is in the loop @ line 30. When
compiling it with -ftree-vectorizer-verbose=5 I get:

OutputDev.cc:30: note: Alignment of access forced using peeling.
OutputDev.cc:30: note: Vectorizing an unaligned access.
OutputDev.cc:30: note: LOOP VECTORIZED.
OutputDev.cc:30: note: vectorized 1 loops in function.

The problem seems to be that gcc can't detect if ctm is aligned properly
(because it's a pointer) for vectorization so it just guesses. I tried to find a
solution for this, but nothing really good turned up. The only viable
work-around I found is to replace the loop with individual assignments to copy
the array.

Gcc-devs are currently working on implementing #pragma novector to disable
vectorization for certain loops, but that isn't included yet. I guess that this
is in more ways a gcc-bug then a poppler-bug.
Comment 2 Albert Astals Cid 2011-06-19 14:52:36 UTC
Is this still a problem?
Comment 3 Albert Astals Cid 2011-10-27 11:30:10 UTC
No answer, closing the bug

Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.