Hi Mike,

thanks for your reply. The version of the pcsclite is the one which is
shipped with OSX Lion. pcscd -v reports version 1.4.0. As written in
my original post I replaced the stock ccid driver with a pached 1.4.9
version in order to support my Springcard NFC terminal. However, the
problem also occurs working only with my Reiner-SCT terminal which
does not make use of the ccid driver but has its own driver.

I also took a detailed look into the logs written by the JVM. Below I
there is the stack trace showing where the problem occurs. The
interesting thing is that even if the stack trace shows problems while
listing the attached readers, my program always properly shows the
readers prior to terminating due to the seg fault.

Stack: [0x0000000108ea8000,0x0000000108fa8000],
sp=0x0000000108fa77e0,  free space=1021k
Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code)
C  [libj2pcsc.dylib+0x166e]  pcsc_multi2jstring+0x11
C  [libj2pcsc.dylib+0x17f9]
Java_sun_security_smartcardio_PCSC_SCardListReaders+0x72
j  sun.security.smartcardio.PCSC.SCardListReaders(J)[Ljava/lang/String;+0
j  
sun.security.smartcardio.PCSCTerminals.list(Ljavax/smartcardio/CardTerminals$State;)Ljava/util/List;+15
j  javax.smartcardio.CardTerminals.list()Ljava/util/List;+4
j  de.frusty.test.smartcard.SmartcardTest.main([Ljava/lang/String;)V+8

-- Wolfgang


On Thu, Jan 24, 2013 at 10:09 PM, Michael StJohns <[email protected]> wrote:
> The first thing I'd do is take a look at which versions of the ccid and 
> pcsclite packages you have on your system.  You may need to update those 
> substantially.  Also, take a look at the logs for the pcscd - see if you even 
> got that far.
>
> Mike
>
>
> At 02:56 PM 1/24/2013, Wolfgang Korn wrote:
>>Hi all,
>>
>>Currently I'm making myself familiar with NFC. For that reason I
>>started with a simple program which simply reads a tag's serial number
>>(see code below). The program is working fine in a Windows
>>environment. However, running the same program under OSX Lion does not
>>work. To be more specific: The program causes a segmentation fault in
>>libj2pcsc.dylib which I assume is javax.smartcard's JNI wrapper to
>>PC/SC. The behavior suggests that there might be some kind of race
>>condition. Moving code from inside a loop to the outside changes the
>>behavior (regarding the seg fault) and also simply introducing delays
>>sometimes changes it. I also tried sample code provided by Springcard
>>and got the same results. I do not thing that this problem is related
>>to the Springcard terminal. Doing the same with a smartcard terminal
>>and a smartcard causes the same problem.
>>
>>I have a Springcard NFC'Roll and a Reiner-SCT cyberjack ecom terminal
>>connected to the machine. In order to make the NFC'Roll working I
>>replaced the CCID driver shipped with OSX with a recompiled version
>>(1.4.9) in which I added the terminal's vendor and product IDs.
>>
>>Here is what I tried to get rid of the problem. First of all I updated
>>my Java6 to the latest version assuming that a new version of the JNI
>>wrapper would be shipped. Now the version is 1.6.0_37. Unfortunately
>>that did not solve the problem. Next step was installing Java7 but
>>that did not eliminate the problem either. Here is the output I get:
>>
>>Invalid memory access of location 0x0 rip=0x109e6f66e
>>java(621,0x1014ae000) malloc: *** mmap(size=140527034961920) failed
>>(error code=12)
>>*** error: can't allocate region
>>*** set a breakpoint in malloc_error_break to debug
>>
>>I also have the log files generated by the JVM.
>>
>>Any suggestion what can be done to get rid of that problem. Any help
>>is much appreciated.
>>
>>Best
>>Wolfgang
>>
>>
>>=======================
>>
>>        try {
>>            while (true) {
>>                // show the list of available terminals
>>                TerminalFactory factory = TerminalFactory.getDefault();
>>                List<CardTerminal> terminals = factory.terminals().list();
>>                System.out.println("Terminals: " + terminals);
>>
>>                // get the first terminal
>>                CardTerminal terminal = terminals.get(1);
>>
>>                if (terminal.isCardPresent()) {
>>                    // establish a connection with the card
>>                    Card card = terminal.connect("*");
>>                    System.out.println("card: " + card);
>>
>>                    // print card's ATR
>>                    ATR atr = card.getATR();
>>                    System.out.println("atr: " + atr.toString());
>>                    System.out.println("ATR bytes");
>>                    HexDump.dump(atr.getBytes(), 0, System.out, 0);
>>                    System.out.println("Historical bytes");
>>                    HexDump.dump(atr.getHistoricalBytes(), 0, System.out, 0);
>>
>>                    // Retrieve serial number
>>                    byte[] c1 = {(byte) 0xff, (byte) 0xca, (byte) 0x00,
>>                        (byte) 0x00, (byte) 0x00};
>>                    CardChannel channel = card.getBasicChannel();
>>                    ResponseAPDU r = channel.transmit(new CommandAPDU(c1));
>>                    System.out.println("Card S/N");
>>                    HexDump.dump(r.getData(), 0, System.out, 0);
>>                    System.out.println();
>>
>>                    // disconnect
>>                    try {
>>                        Thread.sleep(2000);
>>                    }
>>                    catch (InterruptedException ie) {
>>                    }
>>                    card.disconnect(false);
>>                }
>>            }
>>        }
>>        catch (Exception exc) {
>>            exc.printStackTrace();
>>        }
>>
>>_______________________________________________
>>Muscle mailing list
>>[email protected]
>>http://lists.musclecard.com/mailman/listinfo/muscle_lists.musclecard.com
>
>
>
> _______________________________________________
> Muscle mailing list
> [email protected]
> http://lists.musclecard.com/mailman/listinfo/muscle_lists.musclecard.com

_______________________________________________
Muscle mailing list
[email protected]
http://lists.musclecard.com/mailman/listinfo/muscle_lists.musclecard.com

Reply via email to