Bugzilla – Bug 112964
attaching acr38 card reader makes pcscd crash
Last modified: 2005-09-05 14:47:11 UTC
pcsd crashes when the acr38 card reader is attached to the USB bus. The strace of the crash is pasted in below. The driver for the card reader comes from package pcsc-acr38-1.2.9-10 but is packaged wronly - please contact jdebaer@novell.com or SuSE's Sonja Krause-Harder for the related bugzilla number. This wrongly packaging does not cause the crash though - this is another problem. Strace : [pid 6128] <... select resumed> ) = 0 (Timeout) [pid 6128] select(6, [5], NULL, NULL, {1, 0} <unfinished ...> [pid 6129] <... nanosleep resumed> NULL) = 0 [pid 6129] open("/proc/bus/usb", O_RDONLY|O_NONBLOCK|O_LARGEFILE|O_DIRECTORY) = 6 [pid 6129] fstat64(6, {st_mode=S_IFDIR|0755, st_size=0, ...}) = 0 [pid 6129] fcntl64(6, F_SETFD, FD_CLOEXEC) = 0 [pid 6129] getdents(6, /* 6 entries */, 4096) = 100 [pid 6129] getdents(6, /* 0 entries */, 4096) = 0 [pid 6129] close(6) = 0 [pid 6129] open("/proc/bus/usb/003", O_RDONLY|O_NONBLOCK|O_LARGEFILE|O_DIRECTORY) = 6 [pid 6129] fstat64(6, {st_mode=S_IFDIR|0555, st_size=0, ...}) = 0 [pid 6129] fcntl64(6, F_SETFD, FD_CLOEXEC) = 0 [pid 6129] getdents(6, /* 3 entries */, 4096) = 48 [pid 6129] open("/proc/bus/usb/003/001", O_RDWR) = 7 [pid 6129] ioctl(7, USBDEVFS_CONNECTINFO, 0x4036e224) = 0 [pid 6129] read(7, "\22\1\20\1\t\0\0\10\0\0\0\0\6\2\3\2\1\1", 18) = 18 [pid 6129] read(7, "\t\2\31\0\1\1\0\300", 8) = 8 [pid 6129] read(7, "\0\t\4\0\0\1\t\0\0\0\7\5\201\3\2\0\377", 17) = 17 [pid 6129] close(7) = 0 [pid 6129] getdents(6, /* 0 entries */, 4096) = 0 [pid 6129] close(6) = 0 [pid 6129] socket(PF_FILE, SOCK_STREAM, 0) = 6 [pid 6129] connect(6, {sa_family=AF_FILE, path="/var/run/.resmgr_socket"}, 25) = 0 [pid 6129] fcntl64(6, F_SETFD, FD_CLOEXEC) = 0 [pid 6129] rt_sigaction(SIGPIPE, {SIG_IGN}, {SIG_IGN}, 8) = 0 [pid 6129] sendmsg(6, {msg_name(0)=NULL, msg_iov(1)=[{"list usb\n", 9}], msg_controllen=0, msg_flags=0}, 0) = 9 [pid 6129] rt_sigaction(SIGPIPE, {SIG_IGN}, NULL, 8) = 0 [pid 6129] recvmsg(6, {msg_name(0)=NULL, msg_iov(1)=[{"2", 1}], msg_controllen=0, msg_flags=0}, 0) = 1 [pid 6129] recvmsg(6, {msg_name(0)=NULL, msg_iov(1)=[{"0", 1}], msg_controllen=0, msg_flags=0}, 0) = 1 [pid 6129] recvmsg(6, {msg_name(0)=NULL, msg_iov(1)=[{"0", 1}], msg_controllen=0, msg_flags=0}, 0) = 1 [pid 6129] recvmsg(6, {msg_name(0)=NULL, msg_iov(1)=[{" ", 1}], msg_controllen=0, msg_flags=0}, 0) = 1 [pid 6129] recvmsg(6, {msg_name(0)=NULL, msg_iov(1)=[{"n", 1}], msg_controllen=0, msg_flags=0}, 0) = 1 [pid 6129] recvmsg(6, {msg_name(0)=NULL, msg_iov(1)=[{"o", 1}], msg_controllen=0, msg_flags=0}, 0) = 1 [pid 6129] recvmsg(6, {msg_name(0)=NULL, msg_iov(1)=[{" ", 1}], msg_controllen=0, msg_flags=0}, 0) = 1 [pid 6129] recvmsg(6, {msg_name(0)=NULL, msg_iov(1)=[{"d", 1}], msg_controllen=0, msg_flags=0}, 0) = 1 [pid 6129] recvmsg(6, {msg_name(0)=NULL, msg_iov(1)=[{"e", 1}], msg_controllen=0, msg_flags=0}, 0) = 1 [pid 6129] recvmsg(6, {msg_name(0)=NULL, msg_iov(1)=[{"v", 1}], msg_controllen=0, msg_flags=0}, 0) = 1 [pid 6129] recvmsg(6, {msg_name(0)=NULL, msg_iov(1)=[{"i", 1}], msg_controllen=0, msg_flags=0}, 0) = 1 [pid 6129] recvmsg(6, {msg_name(0)=NULL, msg_iov(1)=[{"c", 1}], msg_controllen=0, msg_flags=0}, 0) = 1 [pid 6129] recvmsg(6, {msg_name(0)=NULL, msg_iov(1)=[{"e", 1}], msg_controllen=0, msg_flags=0}, 0) = 1 [pid 6129] recvmsg(6, {msg_name(0)=NULL, msg_iov(1)=[{"s", 1}], msg_controllen=0, msg_flags=0}, 0) = 1 [pid 6129] recvmsg(6, {msg_name(0)=NULL, msg_iov(1)=[{" ", 1}], msg_controllen=0, msg_flags=0}, 0) = 1 [pid 6129] recvmsg(6, {msg_name(0)=NULL, msg_iov(1)=[{"a", 1}], msg_controllen=0, msg_flags=0}, 0) = 1 [pid 6129] recvmsg(6, {msg_name(0)=NULL, msg_iov(1)=[{"v", 1}], msg_controllen=0, msg_flags=0}, 0) = 1 [pid 6129] recvmsg(6, {msg_name(0)=NULL, msg_iov(1)=[{"a", 1}], msg_controllen=0, msg_flags=0}, 0) = 1 [pid 6129] recvmsg(6, {msg_name(0)=NULL, msg_iov(1)=[{"i", 1}], msg_controllen=0, msg_flags=0}, 0) = 1 [pid 6129] recvmsg(6, {msg_name(0)=NULL, msg_iov(1)=[{"l", 1}], msg_controllen=0, msg_flags=0}, 0) = 1 [pid 6129] recvmsg(6, {msg_name(0)=NULL, msg_iov(1)=[{"a", 1}], msg_controllen=0, msg_flags=0}, 0) = 1 [pid 6129] recvmsg(6, {msg_name(0)=NULL, msg_iov(1)=[{"b", 1}], msg_controllen=0, msg_flags=0}, 0) = 1 [pid 6129] recvmsg(6, {msg_name(0)=NULL, msg_iov(1)=[{"l", 1}], msg_controllen=0, msg_flags=0}, 0) = 1 [pid 6129] recvmsg(6, {msg_name(0)=NULL, msg_iov(1)=[{"e", 1}], msg_controllen=0, msg_flags=0}, 0) = 1 [pid 6129] recvmsg(6, {msg_name(0)=NULL, msg_iov(1)=[{"\n", 1}], msg_controllen=0, msg_flags=0}, 0) = 1 [pid 6129] close(6) = 0 [pid 6129] open("/proc/bus/usb/003/001", O_RDWR) = 6 [pid 6129] ioctl(6, USBDEVFS_IOCTL, 0x40370290) = 3 [pid 6129] close(6) = 0 [pid 6129] open("/proc/bus/usb/002", O_RDONLY|O_NONBLOCK|O_LARGEFILE|O_DIRECTORY) = 6 [pid 6129] fstat64(6, {st_mode=S_IFDIR|0555, st_size=0, ...}) = 0 [pid 6129] fcntl64(6, F_SETFD, FD_CLOEXEC) = 0 [pid 6129] getdents(6, /* 4 entries */, 4096) = 64 [pid 6129] open("/proc/bus/usb/002/007", O_RDWR) = 7 [pid 6129] ioctl(7, USBDEVFS_CONNECTINFO, 0x4036e224) = 0 [pid 6129] read(7, "\22\1\20\1\0\0\0\10/\7\0\220\0\1\1\2\0\1", 18) = 18 [pid 6129] read(7, "\t\2\'\0\1\1\0\200", 8) = 8 [pid 6129] read(7, "2\t\4\0\0\3\0\0\0\0\7\5\201\3\10\0\2\7\5\2\2@\0\0\7\5\202"..., 31) = 31 [pid 6129] close(7) = 0 [pid 6129] open("/proc/bus/usb/002/001", O_RDWR) = 7 [pid 6129] ioctl(7, USBDEVFS_CONNECTINFO, 0x4036e224) = 0 [pid 6129] read(7, "\22\1\20\1\t\0\0\10\0\0\0\0\6\2\3\2\1\1", 18) = 18 [pid 6129] read(7, "\t\2\31\0\1\1\0\300", 8) = 8 [pid 6129] read(7, "\0\t\4\0\0\1\t\0\0\0\7\5\201\3\2\0\377", 17) = 17 [pid 6129] close(7) = 0 [pid 6129] getdents(6, /* 0 entries */, 4096) = 0 [pid 6129] close(6) = 0 [pid 6129] socket(PF_FILE, SOCK_STREAM, 0) = 6 [pid 6129] connect(6, {sa_family=AF_FILE, path="/var/run/.resmgr_socket"}, 25) = 0 [pid 6129] fcntl64(6, F_SETFD, FD_CLOEXEC) = 0 [pid 6129] rt_sigaction(SIGPIPE, {SIG_IGN}, {SIG_IGN}, 8) = 0 [pid 6129] sendmsg(6, {msg_name(0)=NULL, msg_iov(1)=[{"list usb\n", 9}], msg_controllen=0, msg_flags=0}, 0) = 9 [pid 6129] rt_sigaction(SIGPIPE, {SIG_IGN}, NULL, 8) = 0 [pid 6129] recvmsg(6, {msg_name(0)=NULL, msg_iov(1)=[{"2", 1}], msg_controllen=0, msg_flags=0}, 0) = 1 [pid 6129] recvmsg(6, {msg_name(0)=NULL, msg_iov(1)=[{"0", 1}], msg_controllen=0, msg_flags=0}, 0) = 1 [pid 6129] recvmsg(6, {msg_name(0)=NULL, msg_iov(1)=[{"0", 1}], msg_controllen=0, msg_flags=0}, 0) = 1 [pid 6129] recvmsg(6, {msg_name(0)=NULL, msg_iov(1)=[{" ", 1}], msg_controllen=0, msg_flags=0}, 0) = 1 [pid 6129] recvmsg(6, {msg_name(0)=NULL, msg_iov(1)=[{"n", 1}], msg_controllen=0, msg_flags=0}, 0) = 1 [pid 6129] recvmsg(6, {msg_name(0)=NULL, msg_iov(1)=[{"o", 1}], msg_controllen=0, msg_flags=0}, 0) = 1 [pid 6129] recvmsg(6, {msg_name(0)=NULL, msg_iov(1)=[{" ", 1}], msg_controllen=0, msg_flags=0}, 0) = 1 [pid 6129] recvmsg(6, {msg_name(0)=NULL, msg_iov(1)=[{"d", 1}], msg_controllen=0, msg_flags=0}, 0) = 1 [pid 6129] recvmsg(6, {msg_name(0)=NULL, msg_iov(1)=[{"e", 1}], msg_controllen=0, msg_flags=0}, 0) = 1 [pid 6129] recvmsg(6, {msg_name(0)=NULL, msg_iov(1)=[{"v", 1}], msg_controllen=0, msg_flags=0}, 0) = 1 [pid 6129] recvmsg(6, {msg_name(0)=NULL, msg_iov(1)=[{"i", 1}], msg_controllen=0, msg_flags=0}, 0) = 1 [pid 6129] recvmsg(6, {msg_name(0)=NULL, msg_iov(1)=[{"c", 1}], msg_controllen=0, msg_flags=0}, 0) = 1 [pid 6129] recvmsg(6, {msg_name(0)=NULL, msg_iov(1)=[{"e", 1}], msg_controllen=0, msg_flags=0}, 0) = 1 [pid 6129] recvmsg(6, {msg_name(0)=NULL, msg_iov(1)=[{"s", 1}], msg_controllen=0, msg_flags=0}, 0) = 1 [pid 6129] recvmsg(6, {msg_name(0)=NULL, msg_iov(1)=[{" ", 1}], msg_controllen=0, msg_flags=0}, 0) = 1 [pid 6129] recvmsg(6, {msg_name(0)=NULL, msg_iov(1)=[{"a", 1}], msg_controllen=0, msg_flags=0}, 0) = 1 [pid 6129] recvmsg(6, {msg_name(0)=NULL, msg_iov(1)=[{"v", 1}], msg_controllen=0, msg_flags=0}, 0) = 1 [pid 6129] recvmsg(6, {msg_name(0)=NULL, msg_iov(1)=[{"a", 1}], msg_controllen=0, msg_flags=0}, 0) = 1 [pid 6129] recvmsg(6, {msg_name(0)=NULL, msg_iov(1)=[{"i", 1}], msg_controllen=0, msg_flags=0}, 0) = 1 [pid 6129] recvmsg(6, {msg_name(0)=NULL, msg_iov(1)=[{"l", 1}], msg_controllen=0, msg_flags=0}, 0) = 1 [pid 6129] recvmsg(6, {msg_name(0)=NULL, msg_iov(1)=[{"a", 1}], msg_controllen=0, msg_flags=0}, 0) = 1 [pid 6129] recvmsg(6, {msg_name(0)=NULL, msg_iov(1)=[{"b", 1}], msg_controllen=0, msg_flags=0}, 0) = 1 [pid 6129] recvmsg(6, {msg_name(0)=NULL, msg_iov(1)=[{"l", 1}], msg_controllen=0, msg_flags=0}, 0) = 1 [pid 6129] recvmsg(6, {msg_name(0)=NULL, msg_iov(1)=[{"e", 1}], msg_controllen=0, msg_flags=0}, 0) = 1 [pid 6129] recvmsg(6, {msg_name(0)=NULL, msg_iov(1)=[{"\n", 1}], msg_controllen=0, msg_flags=0}, 0) = 1 [pid 6129] close(6) = 0 [pid 6129] open("/proc/bus/usb/002/007", O_RDWR) = 6 [pid 6129] ioctl(6, USBDEVFS_IOCTL, 0x40370290) = -1 ENOTTY (Inappropriate ioctl for device) [pid 6129] close(6) = 0 [pid 6129] open("/proc/bus/usb/002/001", O_RDWR) = 6 [pid 6129] ioctl(6, USBDEVFS_IOCTL, 0x40370290) = 3 [pid 6129] close(6) = 0 [pid 6129] open("/proc/bus/usb/001", O_RDONLY|O_NONBLOCK|O_LARGEFILE|O_DIRECTORY) = 6 [pid 6129] fstat64(6, {st_mode=S_IFDIR|0555, st_size=0, ...}) = 0 [pid 6129] fcntl64(6, F_SETFD, FD_CLOEXEC) = 0 [pid 6129] getdents(6, /* 4 entries */, 4096) = 64 [pid 6129] open("/proc/bus/usb/001/005", O_RDWR) = 7 [pid 6129] ioctl(7, USBDEVFS_CONNECTINFO, 0x4036e224) = 0 [pid 6129] read(7, "\22\1\0\2\0\0\0\10m\4\16\300\20\21\1\2\0\1", 18) = 18 [pid 6129] read(7, "\t\2\"\0\1\1\0\240", 8) = 8 [pid 6129] read(7, "1\t\4\0\0\1\3\1\2\0\t!\20\1\0\1\"4\0\7\5\201\3\4\0\n", 26) = 26 [pid 6129] close(7) = 0 [pid 6129] open("/proc/bus/usb/001/001", O_RDWR) = 7 [pid 6129] ioctl(7, USBDEVFS_CONNECTINFO, 0x4036e224) = 0 [pid 6129] read(7, "\22\1\20\1\t\0\0\10\0\0\0\0\6\2\3\2\1\1", 18) = 18 [pid 6129] read(7, "\t\2\31\0\1\1\0\300", 8) = 8 [pid 6129] read(7, "\0\t\4\0\0\1\t\0\0\0\7\5\201\3\2\0\377", 17) = 17 [pid 6129] close(7) = 0 [pid 6129] getdents(6, /* 0 entries */, 4096) = 0 [pid 6129] close(6) = 0 [pid 6129] socket(PF_FILE, SOCK_STREAM, 0) = 6 [pid 6129] connect(6, {sa_family=AF_FILE, path="/var/run/.resmgr_socket"}, 25) = 0 [pid 6129] fcntl64(6, F_SETFD, FD_CLOEXEC) = 0 [pid 6129] rt_sigaction(SIGPIPE, {SIG_IGN}, {SIG_IGN}, 8) = 0 [pid 6129] sendmsg(6, {msg_name(0)=NULL, msg_iov(1)=[{"list usb\n", 9}], msg_controllen=0, msg_flags=0}, 0) = 9 [pid 6129] rt_sigaction(SIGPIPE, {SIG_IGN}, NULL, 8) = 0 [pid 6129] recvmsg(6, {msg_name(0)=NULL, msg_iov(1)=[{"2", 1}], msg_controllen=0, msg_flags=0}, 0) = 1 [pid 6129] recvmsg(6, {msg_name(0)=NULL, msg_iov(1)=[{"0", 1}], msg_controllen=0, msg_flags=0}, 0) = 1 [pid 6129] recvmsg(6, {msg_name(0)=NULL, msg_iov(1)=[{"0", 1}], msg_controllen=0, msg_flags=0}, 0) = 1 [pid 6129] recvmsg(6, {msg_name(0)=NULL, msg_iov(1)=[{" ", 1}], msg_controllen=0, msg_flags=0}, 0) = 1 [pid 6129] recvmsg(6, {msg_name(0)=NULL, msg_iov(1)=[{"n", 1}], msg_controllen=0, msg_flags=0}, 0) = 1 [pid 6129] recvmsg(6, {msg_name(0)=NULL, msg_iov(1)=[{"o", 1}], msg_controllen=0, msg_flags=0}, 0) = 1 [pid 6129] recvmsg(6, {msg_name(0)=NULL, msg_iov(1)=[{" ", 1}], msg_controllen=0, msg_flags=0}, 0) = 1 [pid 6129] recvmsg(6, {msg_name(0)=NULL, msg_iov(1)=[{"d", 1}], msg_controllen=0, msg_flags=0}, 0) = 1 [pid 6129] recvmsg(6, {msg_name(0)=NULL, msg_iov(1)=[{"e", 1}], msg_controllen=0, msg_flags=0}, 0) = 1 [pid 6129] recvmsg(6, {msg_name(0)=NULL, msg_iov(1)=[{"v", 1}], msg_controllen=0, msg_flags=0}, 0) = 1 [pid 6129] recvmsg(6, {msg_name(0)=NULL, msg_iov(1)=[{"i", 1}], msg_controllen=0, msg_flags=0}, 0) = 1 [pid 6129] recvmsg(6, {msg_name(0)=NULL, msg_iov(1)=[{"c", 1}], msg_controllen=0, msg_flags=0}, 0) = 1 [pid 6129] recvmsg(6, {msg_name(0)=NULL, msg_iov(1)=[{"e", 1}], msg_controllen=0, msg_flags=0}, 0) = 1 [pid 6129] recvmsg(6, {msg_name(0)=NULL, msg_iov(1)=[{"s", 1}], msg_controllen=0, msg_flags=0}, 0) = 1 [pid 6129] recvmsg(6, {msg_name(0)=NULL, msg_iov(1)=[{" ", 1}], msg_controllen=0, msg_flags=0}, 0) = 1 [pid 6129] recvmsg(6, {msg_name(0)=NULL, msg_iov(1)=[{"a", 1}], msg_controllen=0, msg_flags=0}, 0) = 1 [pid 6129] recvmsg(6, {msg_name(0)=NULL, msg_iov(1)=[{"v", 1}], msg_controllen=0, msg_flags=0}, 0) = 1 [pid 6129] recvmsg(6, {msg_name(0)=NULL, msg_iov(1)=[{"a", 1}], msg_controllen=0, msg_flags=0}, 0) = 1 [pid 6129] recvmsg(6, {msg_name(0)=NULL, msg_iov(1)=[{"i", 1}], msg_controllen=0, msg_flags=0}, 0) = 1 [pid 6129] recvmsg(6, {msg_name(0)=NULL, msg_iov(1)=[{"l", 1}], msg_controllen=0, msg_flags=0}, 0) = 1 [pid 6129] recvmsg(6, {msg_name(0)=NULL, msg_iov(1)=[{"a", 1}], msg_controllen=0, msg_flags=0}, 0) = 1 [pid 6129] recvmsg(6, {msg_name(0)=NULL, msg_iov(1)=[{"b", 1}], msg_controllen=0, msg_flags=0}, 0) = 1 [pid 6129] recvmsg(6, {msg_name(0)=NULL, msg_iov(1)=[{"l", 1}], msg_controllen=0, msg_flags=0}, 0) = 1 [pid 6129] recvmsg(6, {msg_name(0)=NULL, msg_iov(1)=[{"e", 1}], msg_controllen=0, msg_flags=0}, 0) = 1 [pid 6129] recvmsg(6, {msg_name(0)=NULL, msg_iov(1)=[{"\n", 1}], msg_controllen=0, msg_flags=0}, 0) = 1 [pid 6129] close(6) = 0 [pid 6129] open("/proc/bus/usb/001/005", O_RDWR) = 6 [pid 6129] ioctl(6, USBDEVFS_IOCTL, 0x40370290) = -1 ENOTTY (Inappropriate ioctl for device) [pid 6129] close(6) = 0 [pid 6129] open("/proc/bus/usb/001/001", O_RDWR) = 6 [pid 6129] ioctl(6, USBDEVFS_IOCTL, 0x40370290) = 3 [pid 6129] close(6) = 0 [pid 6129] time([1124981258]) = 1124981258 [pid 6129] stat64("/etc/localtime", {st_mode=S_IFREG|0644, st_size=1067, ...}) = 0 [pid 6129] stat64("/etc/localtime", {st_mode=S_IFREG|0644, st_size=1067, ...}) = 0 [pid 6129] stat64("/etc/localtime", {st_mode=S_IFREG|0644, st_size=1067, ...}) = 0 [pid 6129] send(4, "<14>Aug 25 16:47:38 pcscd: hotpl"..., 92, MSG_NOSIGNAL) = 92 [pid 6129] time([1124981258]) = 1124981258 [pid 6129] stat64("/etc/localtime", {st_mode=S_IFREG|0644, st_size=1067, ...}) = 0 [pid 6129] stat64("/etc/localtime", {st_mode=S_IFREG|0644, st_size=1067, ...}) = 0 [pid 6129] stat64("/etc/localtime", {st_mode=S_IFREG|0644, st_size=1067, ...}) = 0 [pid 6129] send(4, "<14>Aug 25 16:47:38 pcscd: reade"..., 106, MSG_NOSIGNAL) = 106 [pid 6129] futex(0x4003c058, FUTEX_WAKE, 2147483647) = 0 [pid 6129] open("/usr/lib/readers/acs38Driver.bundle/Contents/Linux/acs38Driver", O_RDONLY) = 6 [pid 6129] read(6, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\300\32"..., 512) = 512 [pid 6129] fstat64(6, {st_mode=S_IFREG|0755, st_size=73625, ...}) = 0 [pid 6129] old_mmap(NULL, 27756, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 6, 0) = 0x40371000 [pid 6129] madvise(0x40371000, 27756, MADV_SEQUENTIAL|0x1) = 0 [pid 6129] old_mmap(0x40377000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 6, 0x5000) = 0x40377000 [pid 6129] close(6) = 0 [pid 6129] open("/etc/ld.so.cache", O_RDONLY) = 6 [pid 6129] fstat64(6, {st_mode=S_IFREG|0644, st_size=82032, ...}) = 0 [pid 6129] old_mmap(NULL, 82032, PROT_READ, MAP_PRIVATE, 6, 0) = 0x40378000 [pid 6129] close(6) = 0 [pid 6129] open("/usr/lib/libpcsclite.so.1", O_RDONLY) = 6 [pid 6129] read(6, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\260%\0"..., 512) = 512 [pid 6129] fstat64(6, {st_mode=S_IFREG|0555, st_size=35440, ...}) = 0 [pid 6129] old_mmap(NULL, 36544, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 6, 0) = 0x4038d000 [pid 6129] madvise(0x4038d000, 36544, MADV_SEQUENTIAL|0x1) = 0 [pid 6129] old_mmap(0x40395000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 6, 0x8000) = 0x40395000 [pid 6129] close(6) = 0 [pid 6129] open("/lib/libz.so.1", O_RDONLY) = 6 [pid 6129] read(6, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\0\27\0"..., 512) = 512 [pid 6129] fstat64(6, {st_mode=S_IFREG|0755, st_size=73712, ...}) = 0 [pid 6129] old_mmap(NULL, 75692, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 6, 0) = 0x40396000 [pid 6129] madvise(0x40396000, 75692, MADV_SEQUENTIAL|0x1) = 0 [pid 6129] old_mmap(0x403a8000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 6, 0x11000) = 0x403a8000 [pid 6129] close(6) = 0 [pid 6129] open("/lib/tls/libm.so.6", O_RDONLY) = 6 [pid 6129] read(6, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\2203\0"..., 512) = 512 [pid 6129] fstat64(6, {st_mode=S_IFREG|0755, st_size=191109, ...}) = 0 [pid 6129] old_mmap(NULL, 151712, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 6, 0) = 0x403a9000 [pid 6129] madvise(0x403a9000, 151712, MADV_SEQUENTIAL|0x1) = 0 [pid 6129] old_mmap(0x403cd000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 6, 0x23000) = 0x403cd000 [pid 6129] close(6) = 0 [pid 6129] munmap(0x40378000, 82032) = 0 [pid 6129] time([1124981258]) = 1124981258 [pid 6129] stat64("/etc/localtime", {st_mode=S_IFREG|0644, st_size=1067, ...}) = 0 [pid 6129] stat64("/etc/localtime", {st_mode=S_IFREG|0644, st_size=1067, ...}) = 0 [pid 6129] stat64("/etc/localtime", {st_mode=S_IFREG|0644, st_size=1067, ...}) = 0 [pid 6129] send(4, "<14>Aug 25 16:47:38 pcscd: reade"..., 86, MSG_NOSIGNAL) = 86 [pid 6129] open("/proc/bus/usb", O_RDONLY|O_NONBLOCK|O_LARGEFILE|O_DIRECTORY) = 6 [pid 6129] fstat64(6, {st_mode=S_IFDIR|0755, st_size=0, ...}) = 0 [pid 6129] fcntl64(6, F_SETFD, FD_CLOEXEC) = 0 [pid 6129] getdents(6, /* 6 entries */, 4096) = 100 [pid 6129] open("/proc/bus/usb/003", O_RDONLY|O_NONBLOCK|O_LARGEFILE|O_DIRECTORY) = 7 [pid 6129] fstat64(7, {st_mode=S_IFDIR|0555, st_size=0, ...}) = 0 [pid 6129] fcntl64(7, F_SETFD, FD_CLOEXEC) = 0 [pid 6129] getdents(7, /* 3 entries */, 4096) = 48 [pid 6129] open("/proc/bus/usb/003/001", O_RDWR) = 8 [pid 6129] read(8, "\22\1\20\1\t\0\0\10\0\0\0\0\6\2\3\2\1\1", 18) = 18 [pid 6129] close(8) = 0 [pid 6129] getdents(7, /* 0 entries */, 4096) = 0 [pid 6129] open("/proc/bus/usb/002", O_RDONLY|O_NONBLOCK|O_LARGEFILE|O_DIRECTORY) = 8 [pid 6129] fstat64(8, {st_mode=S_IFDIR|0555, st_size=0, ...}) = 0 [pid 6129] fcntl64(8, F_SETFD, FD_CLOEXEC) = 0 [pid 6129] getdents(8, /* 4 entries */, 4096) = 64 [pid 6129] open("/proc/bus/usb/002/007", O_RDWR) = 9 [pid 6129] read(9, "\22\1\20\1\0\0\0\10/\7\0\220\0\1\1\2\0\1", 18) = 18 [pid 6129] close(6) = 0 [pid 6129] close(8) = 0 [pid 6129] ioctl(9, UI_DEV_DESTROY or USBDEVFS_BULK, 0x4036fbb0) = 4 [pid 6129] ioctl(9, UI_DEV_DESTROY or USBDEVFS_BULK, 0x4036fbb0) = 20 [pid 6129] mmap2(NULL, 2101248, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x403cf000 [pid 6129] mprotect(0x403cf000, 4096, PROT_NONE) = 0 [pid 6129] clone(Process 6138 attached child_stack=0x405cf4c4, flags=CLONE_VM|CLONE_FS|CLONE_FILES|CLONE_SIGHAND|CLONE_THREAD|CLONE_SYSVSEM|CLONE_SETTLS|CLONE_PARENT_SETTID|CLONE_CHILD_CLEARTID, parent_tidptr=0x405cfbf8, {entry_number:6, base_addr:0x405cfbb0, limit:1048575, seg_32bit:1, contents:0, read_exec_only:0, limit_in_pages:1, seg_not_present:0, useable:1}, child_tidptr=0x405cfbf8) = 6138 [pid 6129] --- SIGSEGV (Segmentation fault) @ 0 (0) --- Process 6128 detached Process 6129 detached [pid 6138] +++ killed by SIGSEGV +++ PANIC: handle_group_exit: 6138 leader 6128 Process 6128 detached
Sonja, can you please ask the Zetes folks to get bugzilla accounts so we can assign this stuff to them? Thanks!
Created attachment 47934 [details] updated ACS driver v100705 New ACS driver provided. TRying it on beta2 and then on beta3.
With ACR38_LINUX_100705_P (package built locally) I get to: skh@chomsky:~> belpic-tool -l Readers known about: Nr. Driver Name 0 pcsc ACS ACR38U 00 00 Ok to submit the package?
Hm, maybe not. I observe slightly different behavior than Jo: When I plug the card reader in first, and then do rcpcscd start, the reader is recognized and listed by belpic-tool, as described above. When pcscd is running and I plug in the reader: - I get the following Error in /var/log/messages twice per second: Aug 29 13:36:15 chomsky pcscd: eventhandler.c:288:EHStatusHandlerThread Error communicating to: ACS ACR38U 00 00 Aug 29 13:36:16 chomsky pcscd: eventhandler.c:288:EHStatusHandlerThread Error communicating to: ACS ACR38U 00 00 - rcpcscd stop doesn't have any effect (but kill -15 works just fine, I'll have a look at this) Jo, can you please add the ZETES and ACS people to the Cc: List of this bug, or have them create bugzilla accounts so that I can do so? Thanks.
Forget the second problem, it was fixed with bug 113002.
Added testing reveals: 1. pcscd running, no card reader plugged in: skh@chomsky:~> /usr/lib/pcsc-lite/testpcsc MUSCLE PC/SC Lite Test Program Testing SCardEstablishContext : Command successful. Testing SCardGetStatusChange <-- stops here, then I plug in the reader then: Please insert a working reader : Command successful. Testing SCardListReaderGroups : Command successful. Group 01: SCard$DefaultReaders Testing SCardListReaders : Command successful. Reader 01: ACS ACR38U 00 00 Waiting for card insertion : Command successful. Testing SCardConnect : Command successful. Testing SCardControl : Transaction failed. (don't panic) Testing SCardGetAttrib : Transaction failed. (don't panic) Testing SCardSetAttrib : Command successful. Testing SCardStatus : Command successful. Current Reader Name : ACS ACR38U 00 00 Current Reader State : 0x0034 Current Reader Protocol : T=0 Current Reader ATR Size : 13 bytes Current Reader ATR Value : 3B 98 13 40 0A A5 03 01 01 01 AD 13 11 Testing SCardDisconnect : Command successful. Testing SCardReleaseContext : Command successful. PC/SC Test Completed Successfully ! skh@chomsky:~> No errors in /var/log/messages 1. When I remove the reader, plug it in again, and then run the same program: skh@chomsky:~> /usr/lib/pcsc-lite/testpcsc MUSCLE PC/SC Lite Test Program Testing SCardEstablishContext : Command successful. Testing SCardGetStatusChange Please insert a working reader : Command successful. Testing SCardListReaderGroups : Command successful. Group 01: SCard$DefaultReaders Testing SCardListReaders : Command successful. Reader 01: ACS ACR38U 00 00 Waiting for card insertion : Command successful. Testing SCardConnect : Reader/s is unavailable. skh@chomsky:~> Errors in /var/log/messages as in comment #4 I'll submit the package now as it is, as this behaviour is at least better than the crash. I leave the bug open for ZETES and ACS to comment. Please test with beta 4, which will be available thursday, Sept 1.
Jo, please make sure this gets tested and add the results to this bug, then close (if everything works) or reassign to me.
On behalf of Edward Cheung (ACS): " I guess there is something wrong with the gcc (4.0.2) on SuSE10 I used the pcsclite rpm from SuSE10B3 source tree and compiled it on SuSE10B3. I always got the one of the following two errors: "eventhandler.c:288:EHStatusHandlerThread Error communicating to: ACS ACR38U 00 00 " <- when I disconnect ACR38 (reason: don't know yet) or "pcscd crashed" <- when I connect ACR38 (reason: the pcscd crashed because of an unexpected change to the value of variable, driverSize, in HPEstablishUSBNotifications() of hotplug_libusb.c I print out the value at line 268 (just above } /* End of USB bus for ...loop */) It is originally =1 when the 3rd inner for-loop starts, but it chages to 12xxxxxxx (a big integer) at the end of the loop. Then a SEGV fault is generated and pcscd crashed!) I found the occurance of this error is compilation dependant. Then I used the gcc (3.3.4) compiler on my Slackware to compile the pcscd in pcsclite src rpm from SuSE10B3. I put the 3.3.4 gcc compiled pcscd back to SeSU10B3 system and run again. All error were gone, pcscd does not crash anymore. The I ran [testpcsc]->[remove reader]->[testpcsc] (Sonja's test pattern in comment #6) and it works. Therefore, I guess the problem is caused by the gcc compiler of SuSE10B3. "
Well, for one thing, I'm sure the gcc version isn't the only difference between a Slackware install and Suse 10.0. Most likely a bunch of libraries has changed as well. Second, compiler dependant doesn't necessarily mean that the compiler is buggy. Quite often the problem is simply that newer compiler versions will emit better optimized code, tickling fatal application bugs that were not noticed with previous compiler versions. First suspect is HPAddHotPluggable: { char deviceName[MAX_DEVICENAME]; [...] deviceName[sizeof(deviceName)] = '\0'; Don't write a NUL byte past the end of a string buffer. In this case, we may be corrupting the frame pointer. Second suspect is the autoconf stuff checking for and defining PCSCLITE_THREAD_T. Please create a canary variable before driverSize (just an int with a magic value) and see whether it gets corrupted. That would point to a problem with static PCSCLITE_THREAD_T usbNotifyThread; overflowing.
I added the canary variable and found the magic was modified when the problem occurs. static PCSCLITE_THREAD_T usbNotifyThread (SYS_ThreadCreate()) should be overflowed and corrupt the driverSize variable that follows.
So how what type does configure detect for PCSCLITE_THREAD_T? Do we source the declaration from the right header file? I suggest looking at the cpp output.
Olaf, you are right. deviceName[sizeof(deviceName)] = '\0'; is giving problem. after changing it to deviceName[sizeof(deviceName)-1] = '\0'; I get the reader working on SuSE10 Beta3.
Fine!
Created attachment 48796 [details] pcsc-lite-hotplug_libusb.patch
Any objections against attached patch fro pcsc-lite? Andreas, can this still go into RC1?
Just for the record: The patch fixes an obvious driver bug, and I think it should be included.
Go ahead.
Submitted for RC1.