Yes, it is recommended to use 1.3.1_03. Sun claims they have fixed the
problem with wrong instruction-to-line number association. The effect of
this javac bug was that debugger was showing the execution point at the
wrong line for some "if: statements and "catch" blocks.
I would also recommend to run the debuggee under the classic VM. This slows
application startup, but stepping is much faster than when using HotSpot.

Best regards,
Eugene Zhuravlev
JetBrains, Inc / IntelliJ Software, http://www.intellij.com/
"Develop with pleasure!"

----- Original Message -----
From: "Jon Steelman" <[EMAIL PROTECTED]>
To: <[EMAIL PROTECTED]>
Sent: Friday, April 12, 2002 20:43
Subject: Re: [Eap-list] debugger's MT bug with samples attached


> Can IntelliJ let us know if they recommend using Ariadna with 1.3.1_03
> instead of 1.3.1_02?
>
> Thanks,
> Jon
>
> Robert S. Sfeir wrote:
>
> >Anton, there have been a few bug fixes since the JDK you're using.  You
> >really should use JDK 1.3.1_03.  I don;t know how much of a diff it will
> >make, but it's worth a shot.  I've had a few problems with applets with
> >previous versions to 1.3.1_03 and it was worth the switch.  It seems
> >that IDEA behaves better with it too.
> >
> >R
> >On Fri, 2002-04-12 at 08:46, Anton Shahu wrote:
> >
> >>The debugger has a hard time switching contexts and apparently
> >>loses track if the next breakpoint happens in another thread as shown
> >>in the two attached files.
> >>
> >>Place a breakpoint at respectively readValues and writeValues of RWTest
> >>and debug RWTest.  The first times the debugger will stop at readValues
> >>but then the next breakpoint seems never to be reached.  The CPU is at
> >>almost 0% and the JVM has clearly stopped, but Idea doesn't know this...
> >>
> >>The same thing works like clockwork with Bugseeker.  JDK used
> >>
> >>java -version
> >>java version "1.3.1"
> >>Java(TM) 2 Runtime Environment, Standard Edition (build 1.3.1-b24)
> >>Java HotSpot(TM) Client VM (build 1.3.1-b24, mixed mode)
> >>
> >>socket or memory have same effect, but chosing classic seems to solve
> >>the issue.  The help file says otherwise...
> >>
> >>Idea build 616
> >>
> >>Anton
> >>
> >>_________________________________________________________________
> >>Get your FREE download of MSN Explorer at
http://explorer.msn.com/intl.asp.
> >>----
> >>
> >
> >>public class RWLock {
> >>
> >>    private int readers;
> >>    private int writersWaiting;
> >>
> >>    private boolean writingInProgress;
> >>    private int maxWritersWaiting = 1;
> >>
> >>    RWLock(int maxWW) {
> >>        maxWritersWaiting = maxWW;
> >>    }
> >>
> >>    synchronized public void getReadLock() {
> >>        while (writingInProgress | (writersWaiting >=
maxWritersWaiting)) {
> >>            try {
> >>                wait();
> >>            } catch (InterruptedException ie) {
> >>            }
> >>        }
> >>        readers++;
> >>    }
> >>
> >>    synchronized public void releaseReadLock() {
> >>        readers--;
> >>        if ((readers == 0) & (writersWaiting > 0)) {
> >>            notify();
> >>        }
> >>    }
> >>
> >>    synchronized public void getWriteLock() {
> >>        writersWaiting++;
> >>        while ((readers > 0) | writingInProgress) {
> >>            try {
> >>                wait();
> >>            } catch (InterruptedException ie) {
> >>            }
> >>        }
> >>        writersWaiting--;
> >>        writingInProgress = true;
> >>    }
> >>
> >>    synchronized public void releaseWriteLock() {
> >>        writingInProgress = false;
> >>        notifyAll();
> >>    }
> >>
> >>    public int getReaders() {
> >>        return readers;
> >>    }
> >>
> >>    public int getWaitingWriters() {
> >>        return writersWaiting;
> >>    }
> >>
> >>}
> >>
> >>/*
> >>* $Log:$
> >>*/
> >>----
> >>
> >
> >>public class RWTest {
> >>    int arr[];
> >>    String name;
> >>    RWLock lock;
> >>
> >>    public static void main(String args[]) {
> >>        RWTest rwtest = new RWTest();
> >>    }
> >>
> >>
> >>    RWTest() {
> >>        lock = new RWLock(3);
> >>        arr = new int[3];
> >>        name = "name";
> >>        for (int i = 0; i < 20; i++)
> >>            (new ReaderThread()).start();
> >>
> >>        for (int j = 0; j < 4; j++)
> >>            (new WriterThread()).start();
> >>    }
> >>
> >>    public void readValues() {
> >>        lock.getReadLock();
> >>        System.out.println("Read Lock obtained by " +
> >>Thread.currentThread().getName());
> >>        System.out.println("    >>>>      Readers active  = " +
> >>lock.getReaders());
> >>        System.out.println("    >>>>      Writers waiting = " +
> >>lock.getWaitingWriters());
> >>        for (int i = 0; i < arr.length; i++)
> >>            System.out.print(arr[i] + " ");
> >>        System.out.println(name);
> >>//PLACE BREAKPOINT IN NEXT LINE
> >>        System.out.println("Read Lock to be released by " +
> >>Thread.currentThread().getName());
> >>        lock.releaseReadLock();
> >>    }
> >>
> >>    public void writeValues() {
> >>        lock.getWriteLock();
> >>        System.out.println("Write Lock obtained by " +
> >>Thread.currentThread().getName());
> >>        int value = (int) (Math.random() * 100);
> >>        for (int i = 0; i < arr.length; i++)
> >>            arr[i] = value;
> >>        name = "" + value;
> >>//PLACE BREAKPOINT IN NEXT LINE
> >>        System.out.println("Write Lock to be released by " +
> >>Thread.currentThread().getName());
> >>        lock.releaseWriteLock();
> >>    }
> >>
> >>    class ReaderThread extends Thread {
> >>        public void run() {
> >>            while (true) {
> >>                try {
> >>                    readValues();
> >>                    Thread.sleep((int) (Math.random() * 50));
> >>                } catch (Exception e) {
> >>                }
> >>            }
> >>        }
> >>    }
> >>
> >>    class WriterThread extends Thread {
> >>        public void run() {
> >>            while (true) {
> >>                try {
> >>                    writeValues();
> >>                    Thread.sleep((int) (Math.random() * 100));
> >>                } catch (Exception e) {
> >>                }
> >>            }
> >>        }
> >>    }
> >>}
> >>
>
>
>


_______________________________________________
Eap-list mailing list
[EMAIL PROTECTED]
http://www.intellij.com/mailman/listinfo/eap-list

Reply via email to