Martin,

thanks a lot. I just gave it try and everything is working! I was not
aware that 64bit would be a problem. I assume using a 64bit VM in a
Debian environment isn't a problem, right?

Wolfgang


On Fri, Jan 25, 2013 at 9:19 AM, Martin Paljak <[email protected]> wrote:
> Hello,
>
> This is Apple ;)
>
> for generic Java apps that can use and understand JAVA_HOME you should:
>
> export JAVA_HOME=/System/Library/Frameworks/JavaVM.framework/Versions/1.6/Home
>
> Then make sure to run Java in 32 bit mode with -d32 (Java 1.6 is
> needed because Java 1.7 comes only in 64 bit mode on Apple).
>
>
> For any kind of development (that does not include developing *for*
> mac) I suggest to take a Debian VM inside VMWare player or Virtualbox
> and use it over SSH.
>
> Martin
>
> On Fri, Jan 25, 2013 at 8:52 AM, Wolfgang Korn <[email protected]> wrote:
>> 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
>
> _______________________________________________
> 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