<?xml version="1.0" encoding="UTF-8" ?>

<bugzilla version="5.2"
          urlbase="https://bugzilla.altlinux.org/"
          
          maintainer="jenya@basealt.ru"
>

    <bug>
          <bug_id>21313</bug_id>
          
          <creation_ts>2009-08-31 14:20:36 +0400</creation_ts>
          <short_desc>segfault due to missing error handling</short_desc>
          <delta_ts>2015-09-21 19:00:59 +0300</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>4</classification_id>
          <classification>Development</classification>
          <product>Sisyphus</product>
          <component>libusb</component>
          <version>unstable</version>
          <rep_platform>all</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>CLOSED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc>http://lists.altlinux.org/pipermail/sisyphus/2009-August/341338.html</bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P3</priority>
          <bug_severity>normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>30940</blocked>
    
    <blocked>31292</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Michael Shigorin">mike</reporter>
          <assigned_to name="Valery Inozemtsev">shrek</assigned_to>
          <cc>mike</cc>
    
    <cc>shaba</cc>
    
    <cc>shrek</cc>
          
          <qa_contact>qa-sisyphus</qa_contact>

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>97683</commentid>
    <comment_count>0</comment_count>
    <who name="Michael Shigorin">mike</who>
    <bug_when>2009-08-31 14:20:36 +0400</bug_when>
    <thetext>При попытке использования утилиты sispmtcl с ключом -s под ядром 2.6.18-ovz-rhel-alt7 она сегфолтится:

$ strace sispmctl -o 1
......
open(&quot;/sys/bus/usb/devices&quot;, O_RDONLY|O_NONBLOCK|O_DIRECTORY|O_CLOEXEC) = 3
getdents(3, /* 14 entries */, 32768)    = 384
stat(&quot;/sys/bus/usb/devices/1-1/descriptors&quot;, 0x7fff9270a8a0) = -1 ENOENT (No such file or directory)
open(&quot;/sys/bus/usb/devices/1-1/busnum&quot;, O_RDONLY) = -1 ENOENT (No such file or directory)
close(3)                                = 0
--- SIGSEGV (Segmentation fault) @ 0 (0) --- 
+++ killed by SIGSEGV +++

http://lists.altlinux.org/pipermail/sisyphus/2009-August/341192.html

Дальнейшее разбирательство в sisyphus@ показало, что проблема в недостаточной обработке ошибок в libusb{,-compat}:

(gdb) bt
#0  0x00002b7d2e6b2b9f in usbi_log (ctx=0x0, level=LOG_LEVEL_ERROR, function=0x2b7d2e6bb810 &quot;sysfs_get_device_list&quot;, 
    format=0x2b7d2e6bb1e0 &quot;opendir devices failed errno=%d&quot;) at core.c:1431
#1  0x00002b7d2e6b824e in sysfs_get_device_list (ctx=0x0, _discdevs=0x7fff7cb6b050, usbfs_fallback=0x7fff7cb6b00c)
    at os/linux_usbfs.c:924
#2  0x00002b7d2e6b837a in op_get_device_list (ctx=0x0, _discdevs=0x7fff7cb6b050) at os/linux_usbfs.c:963
#3  0x00002b7d2e6b1ade in libusb_get_device_list (ctx=0x0, list=0x7fff7cb6b098) at core.c:560
#4  0x00002b7d2e15af28 in usb_find_busses () from /lib64/libusb-0.1.so.4 
#5  0x000000000040185c in ?? ()
#6  0x00002b7d2e37c9dd in __libc_start_main () from /lib64/libc.so.6

Это NULL dereference в usbi_log() из libusb.
Вызов libusb_init() завершился неудачно, в результате чего
usbi_default_context остался непроинициализированным.
Остальной код libusb на это не рассчитывает.

Короче говоря, надо исправить обработку ошибок в libusb.

-- 
ldv</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>97758</commentid>
    <comment_count>1</comment_count>
    <who name="Alexander Bokovoy">ab</who>
    <bug_when>2009-08-31 22:55:13 +0400</bug_when>
    <thetext>Assigning.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>152733</commentid>
    <comment_count>2</comment_count>
    <who name="Michael Shigorin">mike</who>
    <bug_when>2015-09-11 15:36:53 +0300</bug_when>
    <thetext>Возможно, связанное:

pcscd: pcscd startup succeeded
kernel: [17235.180530] usb 1-2: USB disconnect, device number 6
pcscd: ccid_usb.c:638:WriteUSB() write failed (1/6): -4 No such device
kernel: [17239.514262] usb 1-2: new full-speed USB device number 7 using xhci_hcd
mtp-probe: checking bus 1, device 7: &quot;/sys/devices/pci0000:00/0000:00:14.0/usb1/1-2&quot;
mtp-probe: bus: 1, device: 7 was not an MTP device
kernel: [17239.717704] pcscd[10402]: segfault at 7fa970ff6f48 ip 00007fa970ff6f48 sp 00007fa970fe6d30 error 14 in libgpg-error.so.0.16.0[7fa971418000+11000]

Ребята из Rutoken говорят, что это известная проблема libusb-1.0.19, которую уже победили и достаточно обновить пакет.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>152753</commentid>
    <comment_count>3</comment_count>
    <who name="Alexey Shabalin">shaba</who>
    <bug_when>2015-09-14 14:36:19 +0300</bug_when>
    <thetext>сегодня зарелизили libusb 1.0.20</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>152792</commentid>
    <comment_count>4</comment_count>
    <who name="Michael Shigorin">mike</who>
    <bug_when>2015-09-19 13:31:15 +0300</bug_when>
    <thetext>Отправил собираться задание 149383 -- если нет возражений против
http://git.altlinux.org/people/mike/packages/?p=libusb.git;a=commitdiff;h=73a324cb092f281feee71392b24523324fbe8330
то прошу пропустить.

Технической возможности проверить с sispmctl уже нет, но известно (comment 2), что между 1.0.19 и 1.0.20 проводилась работа над обработкой ошибок.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>152809</commentid>
    <comment_count>5</comment_count>
    <who name="Repository Robot">repository-robot</who>
    <bug_when>2015-09-21 18:13:09 +0300</bug_when>
    <thetext>libusb-1.0.20-alt1 -&gt; sisyphus:

* Sat Sep 19 2015 Michael Shigorin &lt;mike@altlinux&gt; 1.0.20-alt1
- 1.0.20 (closes: #21313)
- minor spec cleanup</thetext>
  </long_desc>
      
      

    </bug>

</bugzilla>