Bug 112964

Summary: attaching acr38 card reader makes pcscd crash
Product: [openSUSE] SUSE LINUX 10.0 Reporter: jo de baer <jo.debaer>
Component: BasesystemAssignee: Sonja Krause-Harder <skh>
Status: RESOLVED FIXED QA Contact: E-mail List <qa-bugs>
Severity: Normal    
Priority: P5 - None CC: bart.symons, edward.cheung
Version: Beta 2   
Target Milestone: ---   
Hardware: i386   
OS: All   
Whiteboard:
Found By: Other Services Priority:
Business Priority: Blocker: ---
Marketing QA Status: --- IT Deployment: ---
Attachments: updated ACS driver v100705
pcsc-lite-hotplug_libusb.patch

Description jo de baer 2005-08-25 13:07:06 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
Comment 1 Olaf Kirch 2005-08-25 13:28:59 UTC
Sonja, can you please ask the Zetes folks to get bugzilla accounts 
so we can assign this stuff to them? Thanks! 
Comment 2 jo de baer 2005-08-29 08:47:36 UTC
Created attachment 47934 [details]
updated ACS driver v100705

New ACS driver provided. TRying it on beta2 and then on beta3.
Comment 3 Sonja Krause-Harder 2005-08-29 11:27:13 UTC
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? 
Comment 4 Sonja Krause-Harder 2005-08-29 11:40:51 UTC
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. 
 
  
 
Comment 5 Sonja Krause-Harder 2005-08-29 12:02:06 UTC
Forget the second problem, it was fixed with bug 113002. 
Comment 6 Sonja Krause-Harder 2005-08-29 12:33:09 UTC
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. 
Comment 7 Sonja Krause-Harder 2005-08-29 12:39:06 UTC
Jo, please make sure this gets tested and add the results to this bug, then 
close (if everything works) or reassign to me. 
Comment 8 Bart Symons 2005-08-30 15:09:06 UTC
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.
"
Comment 9 Olaf Kirch 2005-08-30 16:00:38 UTC
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. 
Comment 10 Edward Cheung 2005-09-02 10:05:06 UTC
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.
Comment 11 Olaf Kirch 2005-09-02 10:10:57 UTC
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. 
Comment 12 Edward Cheung 2005-09-02 11:11:53 UTC
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.
Comment 13 Olaf Kirch 2005-09-02 11:26:54 UTC
Fine! 
Comment 14 Sonja Krause-Harder 2005-09-05 13:02:29 UTC
Created attachment 48796 [details]
pcsc-lite-hotplug_libusb.patch
Comment 15 Sonja Krause-Harder 2005-09-05 13:04:07 UTC
Any objections against attached patch fro pcsc-lite?   
   
Andreas, can this still go into RC1?   
Comment 16 Olaf Kirch 2005-09-05 13:36:17 UTC
Just for the record: The patch fixes an obvious driver bug, and I think it 
should be included. 
Comment 17 Andreas Jaeger 2005-09-05 14:37:55 UTC
Go ahead.
Comment 18 Sonja Krause-Harder 2005-09-05 14:47:11 UTC
Submitted for RC1.