Bug 140076
Summary: | Kudzu crashes detecting Cirrus Logic GD5446 | ||
---|---|---|---|
Product: | [Fedora] Fedora | Reporter: | Kim Lux <lux> |
Component: | kudzu | Assignee: | Bill Nottingham <notting> |
Status: | CLOSED CANTFIX | QA Contact: | David Lawrence <dkl> |
Severity: | medium | Docs Contact: | |
Priority: | medium | ||
Version: | 3 | CC: | mattdm, rvokal |
Target Milestone: | --- | ||
Target Release: | --- | ||
Hardware: | All | ||
OS: | Linux | ||
Whiteboard: | |||
Fixed In Version: | Doc Type: | Bug Fix | |
Doc Text: | Story Points: | --- | |
Clone Of: | Environment: | ||
Last Closed: | 2006-10-31 04:36:25 UTC | Type: | --- |
Regression: | --- | Mount Type: | --- |
Documentation: | --- | CRM: | |
Verified Versions: | Category: | --- | |
oVirt Team: | --- | RHEL 7.3 requirements from Atomic Host: | |
Cloudforms Team: | --- | Target Upstream Version: | |
Embargoed: |
Description
Kim Lux
2004-11-19 16:53:25 UTC
Can you get a strace or a gdb backtrace? The seg fault happens during boot up and I don't get a command line until 5 minutes later. If you can tell me how to run gdb during boot up , I'll try to get it. We've got several of these cards hanging around. Would you like me to mail you one ? Does it happen if you run it post-boot as well? I have a thought... what if I edit /etc/hardware.conf, remove the video card entry and then run kudzu from within gdb. kudzu should find the card and crash and we should get a bt. I'll try it over the weekend. I don't have access to that machine right now. I ran kudzu in gdb. I didn't build it from source, so I don't have any symbols, but I got this: Program received signal SIGSEGV, Segmentation fault. 0x08061590 in ddcNewDevice () (gdb) bt #0 0x08061590 in ddcNewDevice () #1 0x080527a3 in isCfg () #2 0x00000001 in ?? () #3 0x00000000 in ?? () (gdb) Here is what hconf has in it after X gets things going, ie after kudzu crashes and X gets video working: class: VIDEO bus: PCI detached: 0 driver: Card:Cirrus Logic GD544x desc: "Cirrus Logic GD 5446" vendorId: 1013 deviceId: 00b8 subVendorId: 0000 subDeviceId: 0000 pciType: 1 pcidom: 0 pcibus: 0 pcidev: b pcifn: 0 Hope this helps. Let me know if you need more. Hm, not sure that helps. Do you get something better if you install the kudzu debuginfo package? Here is what I got running kudzu in gdb with kudzu-debuginfo: Program received signal SIGSEGV, Segmentation fault. â 0x08061590 in ddcProbe (probeClass=CLASS_UNSPEC, probeFlags=1, devlist=0x0) at ddc.c:290 290 strcmp(vbe_info->vendor_name.string,"Vendor Name")) { (gdb) bt #0 0x08061590 in ddcProbe (probeClass=CLASS_UNSPEC, probeFlags=1, devlist=0x0) at ddc.c:290 #1 0x080527a3 in probeDevices (probeClass=CLASS_UNSPEC, probeBus=BUS_DDC, probeFlags=1) at kudzu.c:716 #2 0x0804acc3 in Xconfig (dev=0x94381d8) at hwconf.c:124 #3 0x0804d6b5 in configure (dev=0x94381d8) at hwconf.c:934 #4 0x0804f950 in configMenu (oldDevs=0x0, newDevs=0x9470198, runFirst=0) at hwconf.c:1777 #5 0x08050130 in main (argc=17105153, argv=0x1050101) at hwconf.c:1984ancel #6 0x00853e33 in __libc_start_main () from /lib/tls/libc.so.6 #7 0x0804aa51 in _start () (gdb) Is vbe_info->vendor_name.string NULL, or garbage? Program received signal SIGSEGV, Segmentation fault. â 0x08061590 in ddcProbe (probeClass=CLASS_UNSPEC, probeFlags=1, devlist=0x0) at ddc.c:290 290 strcmp(vbe_info->vendor_name.string,"Vendor Name")) { (gdb) bt #0 0x08061590 in ddcProbe (probeClass=CLASS_UNSPEC, probeFlags=1, devlist=0x0) at ddc.c:290 #1 0x080527a3 in probeDevices (probeClass=CLASS_UNSPEC, probeBus=BUS_DDC, probeFlags=1) at kudzu.c:716 #2 0x0804acc3 in Xconfig (dev=0x962c1d8) at hwconf.c:124 #3 0x0804d6b5 in configure (dev=0x962c1d8) at hwconf.c:934 #4 0x0804f950 in configMenu (oldDevs=0x0, newDevs=0x9664198, runFirst=0) at hwconf.c:1777 #5 0x08050130 in main (argc=17105153, argv=0x1050101) at hwconf.c:1984 #6 0x00853e33 in __libc_start_main () from /lib/tls/libc.so.6 #7 0x0804aa51 in _start () (gdb) print vbe_info->vendor_name.string $1 = 0x1000104 <Address 0x1000104 out of bounds> (gdb) print vbe_info->vendor_name.string $1 = 0x1000104 <Address 0x1000104 out of bounds> (gdb) print vbe_info->vendor_name $2 = {addr = {ofs = 260, seg = 256}, string = 0x1000104 <Address 0x1000104 out of bounds>} (gdb) print vbe_info $3 = (struct vbe_info *) 0x95cb950 Ok, the code is actually: if (vbe_info->product_name.string && vbe_info->vendor_name.string && strcmp(vbe_info->vendor_name.string,"Vendor Name")) { This is directly filled in from the VBE stuff. Odd, looks like it's returning garbage. This problem happens on multiple computers with this card, so I doubt we are looking at a faulty card. Does it have anything to do with the fact that kudzu is finding device GD5446 (and crashing) yet X runs fine when it sets up GD544x ? ie should kudzu have found device GD544x instead of GC5446 ? No. Fedora Core 3 is now maintained by the Fedora Legacy project for security updates only. If this problem is a security issue, please reopen and reassign to the Fedora Legacy product. If it is not a security issue and hasn't been resolved in the current FC5 updates or in the FC6 test release, reopen and change the version to match. Thank you! Closing per lack of response to previous request for information. This bug was originally filed against a much earlier version of Fedora Core, and significant changes have taken place since the last version for which this bug is confirmed. Note that FC3 and FC4 are supported by Fedora Legacy for security fixes only. Please install a still supported version and retest. If it still occurs on FC5 or FC6, please reopen and assign to the correct version. Otherwise, if this a security issue, please change the product to Fedora Legacy. Thanks, and we are sorry that we did not get to this bug earlier. Nothing to be sorry about. We abandoned using that hardware. Should that PC ever come out of storage and be used, we'll resubmit the bug. |