rawhide report: 20060822 changes

Erwin Rol mailinglists at erwinrol.com
Thu Aug 24 11:10:51 UTC 2006


Tim Waugh wrote:
> On Thu, 2006-08-24 at 11:58 +0200, Erwin Rol wrote:
> 
>> I see that here too on X86_64 but i didn't see it on i386 (that i didn't 
>> see it doesn't mean it doesn't happen :-).
> 
> Your backtrace is a different one than I'd been expected from bug
> #203784, so might not be fixed in 1.2.2-15.
> 
>> Program received signal SIGSEGV, Segmentation fault.
>> [Switching to Thread 46912568808784 (LWP 11520)]
>> 0x00002aaaac73f610 in context_range_get () from /lib64/libselinux.so.1
>> (gdb) bt
>> #0  0x00002aaaac73f610 in context_range_get () from /lib64/libselinux.so.1
> 
> It would be great if you could 'up' and 'info locals' at that point.

I think the following code is the problem;

1600          printercon = 0;
1601          printerfile = strstr(p->device_uri, "/dev/");
1602
1603          if (printerfile != NULL)
1604          {
1605            if (getfilecon(printerfile, &devcon) == -1)
1606                cupsdLogMessage(CUPSD_LOG_ERROR, 
"cupsdSetPrinterAttrs: Unable to get printer context");
1607            else
1608              printercon = context_new(devcon);
1609
1610            if (context_range_get(printercon))
1611              rangestr = strdup(context_range_get(printercon));
1612          }

The call on line 1605 fails with -1, and so the context_new(devcon) on 
line 1608 is never called, and that resultets in 
(context_range_get(printercon)) on line 1610 to be called with a NULL 
parameter, wich it apparently doesn't like.

Starting program: /usr/sbin/cupsd -f
[Thread debugging using libthread_db enabled]
[New Thread 46912568808784 (LWP 11961)]

Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread 46912568808784 (LWP 11961)]
*context_range_get_internal (context=0x0) at context.c:182
182         def_get(range, COMP_RANGE)
(gdb) bt
#0  *context_range_get_internal (context=0x0) at context.c:182
#1  0x000055555558e815 in cupsdSetPrinterAttrs (p=0x5555557c6bc0) at 
printers.c:1610
#2  0x000055555558f875 in cupsdLoadAllPrinters () at printers.c:920
#3  0x000055555556de80 in cupsdReadConfiguration () at conf.c:1100
#4  0x00005555555736c5 in main (argc=<value optimized out>, 
argv=0x7fffcb394ad8) at main.c:429
(gdb) info locals
No locals.
(gdb) up
#1  0x000055555558e815 in cupsdSetPrinterAttrs (p=0x5555557c6bc0) at 
printers.c:1610
1610            if (context_range_get(printercon))
(gdb) info locals
valptr = <value optimized out>
attrptr = <value optimized out>
i = <value optimized out>
length = <value optimized out>
uri = 
"hal:///org/freedesktop/Hal/devices/usb_device_3f0_317_00CNC2651689_if0_printer_noserial\000% 
x\n    1 index neg\t\t% loopval\n    1 add\t\t% 1 - loopval\n    3 
index\t\t% height\n  0�8��\177\000\000% 
height\a\000\000\000\000\000\000\000loopval)"...
resource = "/printers/lj1200\000rjet-1200--1\000the entire distance\n 
show\t\t\t\t% Show the string\n} bind def\n/NUMBER {\t\t\t% Draw a 
number\n\t\t\t\t% power n NUMBER -\n  1 index 1 eq {\t\t% power 
==��{UUU\000\000 o{UUU\000\000p�8��\177\000\000p�8��\177\000\000"...
filename = "/etc/cups/ppd/hp-laserjet-1200--1.ppd\000pyright 1993-2005 
Easy Software Products\n%\n%   These coded instructions, statements, and 
computer programs are the\n%   property of Easy Software Products and 
are "...
num_media = <value optimized out>
auth = <value optimized out>
auth_supported = <value optimized out>
ppd = <value optimized out>
input_slot = <value optimized out>
media_type = <value optimized out>
page_size = <value optimized out>
output_bin = <value optimized out>
media_quality = <value optimized out>
duplex = <value optimized out>
ppdattr = <value optimized out>
attr = (ipp_attribute_t *) 0x5555557c7500
val = <value optimized out>
num_finishings = <value optimized out>
finishings = {IPP_FINISHINGS_NONE, 1852727650, 1881174629, 543516513, 
544370534}
option = <value optimized out>
audit_message = 0x0
printerfile = <value optimized out>
rangestr = <value optimized out>
devcon = 0x312e3120746e6972 <Address 0x312e3120746e6972 out of bounds>
printercon = (context_t) 0x0
sides = {0x5555555a1f2d "one-sided", 0x5555555a1f19 
"two-sided-long-edge", 0x5555555a1ef5 "two-sided-short-edge"}
(gdb) up
#2  0x000055555558f875 in cupsdLoadAllPrinters () at printers.c:920
920             cupsdSetPrinterAttrs(p);
(gdb) info locals
fp = (cups_file_t *) 0x5555557bf6e0
linenum = 33
line = 
"</Printer>\000\000stop-printer\0000\0003...\000/Hal/devices/usb_device_3f0_317_00CNC2651689_if0_printer_noserial\000\016\033\000\000\000\000��8��\177\000\000��8��\177\000\000�:\225��*\000\000\000\000\000\000\000\000\000\000h�zUUU\000\000�Ts��138\031vR��*\000\000��\225��*\000\0000lR��*\000\000\000\000\000\000\001\000\000\000q\000\000\000\001\000\000\000\020\000\000\0000\000\000\000"...
value = 0x0
valueptr = 0x5555557c70a8 "�x{UUU"
p = (cupsd_printer_t *) 0x5555557c6bc0
(gdb)




More information about the fedora-devel-list mailing list