It could be a problem if you were using PKCS11 class, but shouldnt be, AFAIK, if you stay on pcsc layer.
On Fri, Jan 25, 2013 at 5:06 PM, Wolfgang Korn <[email protected]> wrote: > 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 _______________________________________________ Muscle mailing list [email protected] http://lists.musclecard.com/mailman/listinfo/muscle_lists.musclecard.com
