您的位置:首页 > Web前端 > JavaScript

ijsgutenprint出现segment fault

2014-02-28 20:02 309 查看
ijsgutenprint移植到Android出现的问题,在一般的嵌入式linux上没有问题,对比差异的过程中在Google出了答案(开始会以为文件系统差异导致的呢,因为Android的没有/tmp目录),如果这个问题不Google也能找出答案,这次的经验教训是写代码不能太不可思议了,出现的错误和问题表面上都看不出关联来,还是在一个05年发的帖子中找到了答案,纠结了一下午。以下转载:http://sourceforge.net/p/gimp-print/bugs/406/

I have RPMized the snapshot for Mandriva Linux in the

last days, because the beta4 had some Foomatic bugs

which prevented print queues from working.

On some machines Gutenprint then worked perfectly

(tested by me and others with the Stylus Photo 950,

Stylus C84, and Stylus C86). On another machine I got a

core dump with the Stylus Photo 950, but the core dump

even persisted when choosing another device (C84) or a

non-existing device (entering gibberish as

"-sDeviceModel=..." argument). Strangely enough one set

of RPM packages, built on the Mandriva compilation

cluster, worked on the first box and had

ijsgutenprint.5.0 coredumping on the second machine.

ESP GhostScript was also from the same RPM on the two

machines and both were set to french locale.

Fortunately, the behaviour did not change when

rebuilding the RPM with "--enable-debug" added to the

"./configure ..." line and the stripping by RPM being

turned off. So I could run the core file through gdb:

------------------------------------------------------------------------------------------

[root@localhost g]# cat

/usr/share/cups/data/testprint.ps | gs -q

-dPARANOIDSAFER -dNOPAUSE -dBATCH -sDEVICE=ijs

-sIjsServer=/usr/bin/ijsgutenprint.5.0 -dIjsUseOutputFD

-sDeviceManufacturer=Epson -sDeviceModel=escp2-950

-dDEVICEWIDTHPOINTS=612 -dDEVICEHEIGHTPOINTS=792

-r360x360 -sProcessColorModel=DeviceRGB -sOutputFile=-

- > x

DEBUG: ESP Ghostscript 815.01: Can't start ijs server

"/usr/bin/ijsgutenprint.5.0"

[root@localhost g]#

[root@localhost g]#

[root@localhost g]#

[root@localhost g]# ll core.15257

-rw------- 1 root root 376832 ao 25 22:52 core.15257

[root@localhost g]# gdb -c core.15257

/usr/bin/ijsgutenprint.5.0

GNU gdb 6.3-5mdk (Mandriva Linux release 2006.0)

Copyright 2004 Free Software Foundation, Inc.

GDB is free software, covered by the GNU General Public

License, and you are

welcome to change it and/or distribute copies of it

under certain conditions.

Type "show copying" to see the conditions.

There is absolutely no warranty for GDB. Type "show

warranty" for details.

This GDB was configured as

"i586-mandriva-linux-gnu"...Using host libthread_db

library "/lib/tls/libthread_db.so.1".

warning: core file may not match specified executable file.

Reading symbols from shared object read from target

memory...done.

Loaded system supplied DSO at 0xffffe000

Core was generated by `/usr/bin/ijsgutenprint.5.0'.

Program terminated with signal 11, Segmentation fault.

warning: svr4_current_sos: Can't read pathname for load

map: Input/output error

Reading symbols from /usr/lib/libgutenprint.so.2...done.

Loaded symbols for /usr/lib/libgutenprint.so.2

Reading symbols from /lib/tls/libm.so.6...done.

Loaded symbols for /lib/tls/libm.so.6

Reading symbols from /usr/lib/libijs.so.1...done.

Loaded symbols for /usr/lib/libijs.so.1

Reading symbols from /lib/tls/libc.so.6...done.

Loaded symbols for /lib/tls/libc.so.6

Reading symbols from /lib/ld-linux.so.2...done.

Loaded symbols for /lib/ld-linux.so.2

#0 0xb7f40b97 in stpi_get_printfuncs (printer=0x0) at

printers.c:174

174 printers.c: No such file or directory.

in printers.c

(gdb) bt

#0 0xb7f40b97 in stpi_get_printfuncs (printer=0x0) at

printers.c:174

#1 0xb7f40b7b in stp_printer_list_parameters

(v=0x8053da0) at printers.c:247

#2 0xb7f38b86 in stp_get_parameter_list (v=0x8053da0)

at print-util.c:607

#3 0x0804d74a in stp_dbg (msg=0x80502a4

"ijsgutenprint: about to start\n",

v=0x8053da0) at ijsgutenprint.c:972

#4 0x0804e869 in main (argc=1, argv=0xbfbcf614) at

ijsgutenprint.c:1210

(gdb) quit

[root@localhost g]#

------------------------------------------------------------------------------------------

Here is the ".configure" command line which I have used:

------------------------------------------------------------------------------------------

configure --enable-shared --disable-rpath

--disable-libgutenprintui --enable-libgutenprintui2

--without-gimp --with-gimp2 --with-cups --with-ijs

--with-foomatic --with-foomatic3

--enable-cups-level3-ppds --disable-translated-ppds

--disable-cups-level3-ps --disable-static-genppd

------------------------------------------------------------------------------------------

RPM has added following optimization flags: -O2

-fomit-frame-pointer -pipe -march=i586 -mtune=pentiumpro

In the debug mode build "-O2" was replaced by -g.

Logged In: YES

user_id=47862

I have found the cause of the problem: the printers.xml file

was missing on the machine where the core dump occured and

it was present on the other box. After installing it, the

printer printed correctly. The
missing printers.xml was

caused by a missing dependency in my RPMs. So it was not a

bug of Gutenprint.
看发帖这个哥们愣是调试出来了,我调试用的是strace,结果什么都看不出来。应该向人家学习学习。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐