hang in Lion

Martijn Verburg martijnverburg at gmail.com
Wed Nov 30 06:47:42 PST 2011


Hi all,

FWIW I've also tested it using 1.6.0_29 and 1.7.0 b219 on Lion 10.7.2
(on a 13" MBP 2.53 GHz Intel Core 2 Duo) and could not repeat the
issue.  That said I can't see anything in the _29 release notes that
would indicate a fix related to this issue, so I'm dubious that my
tests are conclusive.

Cheers,
Martijn

On 30 November 2011 14:34, Henri Gomez <henri.gomez at gmail.com> wrote:
> Note, I tested on i7 (SnowLeopard), and Core2Duo (Lion)
>
> 2011/11/30 Michael McMahon <michael.x.mcmahon at oracle.com>:
>> I was able to repeat it using java version "1.6.0_27"
>> on an imac (with -Xcomp, but not -Xint) .
>>
>> Was not able to repeat using 7 on the same system,
>> I also couldn't repeat it on a different machine using 1.6.0_29.
>>
>> So, maybe the issue was fixed between updates 27 and 29?
>>
>> - Michael.
>>
>>
>> On 30/11/11 14:21, Henri Gomez wrote:
>>>
>>> Hi Charles
>>>
>>> Just tried with latest build of OpenJDK 7 for OSX
>>>
>>> (http://openjdk-osx-build.googlecode.com/files/OpenJDK-OSX-1.7-universal-jdk-b219-20111130.dmg)
>>> :
>>>
>>> openjdk version "1.7.0-b219"
>>> OpenJDK Runtime Environment (build 1.7.0-b219-20111130)
>>> OpenJDK 64-Bit Server VM (build 21.0-b17, mixed mode)
>>>
>>> Compiled and run with OpenJDK 7 :
>>>
>>> Started
>>> Awaiting complete...
>>> Thread started Thread-0
>>> Thread started Thread-1
>>> Thread-0: 10000
>>> Thread-1: 20000
>>> Thread-0: 30000
>>> Thread-0: 40000
>>> Thread-1: 50000
>>> Thread-1: 60000
>>> Thread-1: 70000
>>> Thread-1: 80000
>>> Thread-1: 90000
>>> Thread-1: 100000
>>> Thread-0: 110000
>>> Thread-0: 120000
>>> Thread-1: 130000
>>> Thread-0: 140000
>>> Thread-1: 150000
>>> Thread-0: 160000
>>> Thread-0: 170000
>>> Thread-0: 180000
>>> Thread done Thread-1
>>> Thread-0: 190000
>>> Thread-0: 200000
>>> Thread done Thread-0
>>> Completed...
>>>
>>> Tried on latest Apple Java 6 (1.6.0-29) and rebuilt Foo with it :
>>>
>>> java version "1.6.0_29"
>>> Java(TM) SE Runtime Environment (build 1.6.0_29-b11-402-10M3527)
>>> Java HotSpot(TM) 64-Bit Server VM (build 20.4-b02-402, mixed mode)
>>>
>>> Started
>>> Thread started Thread-1
>>> Thread started Thread-2
>>> Awaiting complete...
>>> Thread-2: 10000
>>> Thread-1: 20000
>>> Thread-1: 30000
>>> Thread-2: 40000
>>> Thread-2: 50000
>>> Thread-1: 60000
>>> Thread-1: 70000
>>> Thread-2: 80000
>>> Thread-2: 90000
>>> Thread-1: 100000
>>> Thread-1: 110000
>>> Thread-2: 120000
>>> Thread-1: 130000
>>> Thread-1: 140000
>>> Thread-1: 150000
>>> Thread-1: 160000
>>> Thread-1: 170000
>>> Thread-2: 180000
>>> Thread-2: 190000
>>> Thread-1: 200000
>>> Thread done Thread-2
>>> Thread done Thread-1
>>> Completed...
>>>
>>> Tried on both SnowLeopard and Lion machines.
>>>
>>> Cheers
>>>
>>> 2011/11/30 Charles K Pepperdine<kirk at kodewerk.com>:
>>>>
>>>> Hi,
>>>>
>>>> I've got a chunk of code that mysteriously hangs on my new i7 Air running
>>>> Lion. This code was given to me by a friend that is also running Lion. We've
>>>> given it to another person that is also running Lion. I'm using
>>>> 1.6.0_26-b02-383. It doesn't hang all the time and it doesn't hang on my
>>>> older i7 17" MBP running Snow Leopard. It's also been tested on other MBP's
>>>> running Snow Leopard without hanging. Forcing a core dump after the hang
>>>> gave us this.
>>>>
>>>>> Thread 24:  Java: Thread-1
>>>>> 0   libSystem.B.dylib                 0x00007fff89f88d7a mach_msg_trap +
>>>>> 10
>>>>> 1   libSystem.B.dylib                 0x00007fff89f893ed mach_msg + 59
>>>>> 2   libclient64.dylib                 0x000000010100d903 jio_snprintf +
>>>>> 37641
>>>>> 3   libclient64.dylib                 0x000000010100d7c3 jio_snprintf +
>>>>> 37321
>>>>> 4   libclient64.dylib                 0x000000010100d722 jio_snprintf +
>>>>> 37160
>>>>> 5   libclient64.dylib                 0x000000010100c5ad jio_snprintf +
>>>>> 32691
>>>>> 6   libclient64.dylib                 0x000000010100c4ef jio_snprintf +
>>>>> 32501
>>>>> 7   libclient64.dylib                 0x00000001011afefd
>>>>> JVM_GetClassInterfaces + 12075
>>>>> 8   libclient64.dylib                 0x00000001010a7c8c JVM_Lseek +
>>>>> 204251
>>>>> 9   libclient64.dylib                 0x00000001010a7bea JVM_Lseek +
>>>>> 204089
>>>>> 10  libclient64.dylib                 0x00000001011b4931 JVM_Socket +
>>>>> 5319
>>>>> 11  ???                               0x000000010380f0e7 0 + 4353749223
>>>>> 12  ???                               0x000000010386fd90 0 + 4354145680
>>>>>
>>>>> Thread 25:  Java: Thread-2
>>>>> 0   libSystem.B.dylib                 0x00007fff89f88d7a mach_msg_trap +
>>>>> 10
>>>>> 1   libSystem.B.dylib                 0x00007fff89f893ed mach_msg + 59
>>>>> 2   libclient64.dylib                 0x000000010100db03 jio_snprintf +
>>>>> 38153
>>>>> 3   libclient64.dylib                 0x00000001010cb569 JVM_Write +
>>>>> 9130
>>>>> 4   libclient64.dylib                 0x00000001011ddfcd JVM_NanoTime +
>>>>> 39179
>>>>> 5   ???                               0x000000010386ea60 0 + 4354140768
>>>>
>>>> All of the other thread could be attributed to VM processes (GC, compiler
>>>> etc...).
>>>>
>>>> On my machine, the hang seems to only happen when thread-2 finishes
>>>> before thread-1. I've never seen it hang when thread-1 finishes before
>>>> thread-2 Again it doesn't hang all the time when thread-2 finishes first.
>>>> This is a hard hang in that I can only get rid of the process with a kill
>>>> -9. ^C and kill simply don't to anything.
>>>>
>>>> Code follows,
>>>>
>>>> Regards,
>>>> Kirk Pepperdine
>>>>
>>>> public class Foo {
>>>>
>>>>    private int counter;
>>>>
>>>>    public static void main(String[] args) throws Exception {
>>>>        new Foo().run();
>>>>    }
>>>>
>>>>    public void run() throws Exception {
>>>>
>>>>        Thread[] threads = new Thread[2];
>>>>
>>>>        for (int i = 0; i<  threads.length; i++) {
>>>>            threads[i] = new Thread() {
>>>>                public void run() {
>>>>
>>>>                    System.out.println("Thread started " +
>>>> Thread.currentThread().getName());
>>>>                    System.out.flush();
>>>>
>>>>                    for (int i = 0; i<  100000; i++) {
>>>>                        increment();
>>>>                    }
>>>>
>>>>                    System.out.println("Thread done " +
>>>> Thread.currentThread().getName());
>>>>                    System.out.flush();
>>>>                }
>>>>            };
>>>>        }
>>>>
>>>>        for (Thread t : threads) {
>>>>            t.start();
>>>>        }
>>>>
>>>>        System.out.println("Started");
>>>>        System.out.flush();
>>>>
>>>>        System.out.println("Awaiting complete...");
>>>>        System.out.flush();
>>>>
>>>>        for (Thread t : threads) {
>>>>            t.join();
>>>>        }
>>>>
>>>>        System.out.println("Completed...");
>>>>        System.out.flush();
>>>>    }
>>>>
>>>>    private synchronized void increment() {
>>>>
>>>>        counter++;
>>>>
>>>>        if (counter % 10000 == 0) {
>>>>            System.out.printf("%s: %d\n",
>>>> Thread.currentThread().getName(), counter);
>>>>            System.out.flush();
>>>>        }
>>>>    }
>>>> }
>>
>>
>


More information about the macosx-port-dev mailing list