Re: [Sablevm-developer] sablevm hang
Brought to you by:
egagnon
|
From: Joseph P. <pa...@mc...> - 2004-06-17 21:16:26
|
I've done some testing with sablevm and calling methods for awt, and i
haven't had a problem. For example, instantiating an AWT or Swing class
from inside another class there were no problems. If i remove that call
in code, it then hangs on the instantiation of an AWT/Swing class one line
later. The hang happens every time (and i've tried about 40+ times to
make sure ;p). I'm really not sure why it would hang there, and i know
there is no problem using Sun's jvm.
I'm not too familiar on how your vm works. Do you create a thread per
class that's loaded, etc? I wish i had a more simple test case to work
with. What are the relevant files i should be looking at? I will
continue to try and replicate this problem in a more simple case.
--Joe
On Thu, 17 Jun 2004, Chris Pickett wrote:
> Hi Joe,
>
> It's obviously a deadlock somewhere, which means a concurrency /
> threading bug. It could either be in Classpath or in our locking code.
> AWT is not really something I know about. Greg recently implemented
> InterruptedException IIRC, and that could be it as well.
>
> Can you reproduce the problem without AWT? Is that really the absolute
> simplest test case you can give us? What happens if you declare the
> Thread body as a named class? Does it happen every single time?
>
> Cheers,
> Chris
>
> Joseph Paris wrote:
> > Were you able to make any progress on figuring out what the problem is?
> > If there is anything more you need from me, please don't hesitate to ask.
> >
> > --Joe
> >
> > On Mon, 14 Jun 2004, Joseph Paris wrote:
> >
> >
> >>no problem. Here it is:
> >>
> >>(VMObject.java:-1) java/lang/VMObject.wait n
> >>(Object.java:431) java/lang/Object.wait
> >>(GtkMainThread.java:63) gnu/java/awt/peer/gtk/GtkMainThread.<init>
> >>(GtkToolkit.java:108) gnu/java/awt/peer/gtk/GtkToolkit.<init>
> >>(Constructor.java:-1) java/lang/reflect/Constructor.constructNative n
> >>(Constructor.java:408) java/lang/reflect/Constructor.newInstance
> >>(Class.java:1496) java/lang/Class.newInstance
> >>(Toolkit.java:522) java/awt/Toolkit.getDefaultToolkit
> >>(Component.java:695) java/awt/Component.getToolkit
> >>(Container.java:374) java/awt/Container.addImpl
> >>(Container.java:268) java/awt/Container.add
> >>(ConfigDialog.java:329)
> >>net/jxta/impl/peergroup/ConfigDialog$PagesPanel.<init>
> >>(ConfigDialog.java:375) net/jxta/impl/peergroup/ConfigDialog.<init>
> >>(DefaultConfigurator.java:139)
> >>net/jxta/impl/peergroup/DefaultConfigurator.<init>
> >>(DefaultConfigurator.java:126)
> >>net/jxta/impl/peergroup/DefaultConfigurator.<init>
> >>(Constructor.java:-1) java/lang/reflect/Constructor.constructNative n
> >>(Constructor.java:408) java/lang/reflect/Constructor.newInstance
> >>(Class.java:1496) java/lang/Class.newInstance
> >>(Platform.java:202)
> >>net/jxta/impl/peergroup/Platform.generateConfigAdvertisement
> >>(Platform.java:161) net/jxta/impl/peergroup/Platform.initFirst
> >>(GenericPeerGroup.java:784) net/jxta/impl/peergroup/GenericPeerGroup.init
> >>(PeerGroupFactory.java:369)
> >>net/jxta/peergroup/PeerGroupFactory.newPlatform
> >>(PeerGroupFactory.java:420)
> >>net/jxta/peergroup/PeerGroupFactory.newNetPeerGroup
> >>(Server.java:116) Server.startJxta
> >>(Server.java:108) Server.main
> >>(VirtualMachine.java:-1) java/lang/VirtualMachine.invokeMain n
> >>(VirtualMachine.java:92) java/lang/VirtualMachine.main
> >>
> >>
> >>Thanks,
> >>Joe
> >>
> >>
> >>On Mon, 14 Jun 2004, Etienne Gagnon wrote:
> >>
> >>
> >>>Hi Joe,
> >>>
> >>>Could you also type Ctrl-\ [e.g. SIGQUIT], when it hangs? This would
> >>>dump the Java stack trace.
> >>>
> >>>Etienne
> >>>
> >>>Joseph Paris wrote:
> >>>
> >>>>Heya,
> >>>>
> >>>>I'm running into an issue were the sablevm seems to be hanging on what i
> >>>>think is a threading related issue. I've narrowed down where in code
> >>>>the hang occurs, but i'm not sure _why_ it occurs. I'm providing the
> >>>>class and instantiation along with a portion of strace output. if more
> >>>>strace output would help, please let me know.
> >>>>
> >>>>Any help would be greatly appreciated.
> >>>>
> >>>>System config:
> >>>>Suse 9.1 updated; x86
> >>>>
> >>>>Thanks,
> >>>>Joe
> >>>>
> >>>>------AwtUtils.java from the JXTA distribution-----
> >>>>****Executed as AwtUtils.initAsDaemon()****
> >>>>
> >>>>
> >>>>import java.awt.Frame;
> >>>>
> >>>>public class AwtUtils {
> >>>>
> >>>> public static void initAsDaemon() {
> >>>> (new Thread() {
> >>>> public void run() {
> >>>> try {
> >>>> Frame f = new Frame();
> >>>> f.dispose();
> >>>> } catch (Throwable t) {
> >>>> }
> >>>> }
> >>>> public void doit() {
> >>>> setDaemon(true);
> >>>> setName("awt daemon initializer");
> >>>> start();
> >>>> try {
> >>>> join();
> >>>> } catch (InterruptedException ie) {
> >>>> }
> >>>> }
> >>>> }).doit();
> >>>> }
> >>>>}
> >>>>
> >>>>
> >>>>-------------------Strace output---------------------
> >>>>
> >>>>open("/usr/local/lib/libfontconfig.so.1", O_RDONLY) = -1 ENOENT (No such
> >>>>file or directory)
> >>>>open("tls/i686/sse2/libfontconfig.so.1", O_RDONLY) = -1 ENOENT (No such
> >>>>file ordirectory)
> >>>>open("tls/i686/libfontconfig.so.1", O_RDONLY) = -1 ENOENT (No such file or
> >>>>directory)
> >>>>open("tls/sse2/libfontconfig.so.1", O_RDONLY) = -1 ENOENT (No such file or
> >>>>directory)
> >>>>open("tls/libfontconfig.so.1", O_RDONLY) = -1 ENOENT (No such file or
> >>>>directory)open("i686/sse2/libfontconfig.so.1", O_RDONLY) = -1 ENOENT (No
> >>>>such file or directory)
> >>>>open("i686/libfontconfig.so.1", O_RDONLY) = -1 ENOENT (No such file or
> >>>>directory)
> >>>>open("sse2/libfontconfig.so.1", O_RDONLY) = -1 ENOENT (No such file or
> >>>>directory)
> >>>>open("libfontconfig.so.1", O_RDONLY) = -1 ENOENT (No such file or
> >>>>directory)open("/usr/lib/libfontconfig.so.1", O_RDONLY) = 13
> >>>>read(13, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\300\223"...,
> >>>>512) = 512
> >>>>fstat64(13, {st_mode=S_IFREG|0755, st_size=204755, ...}) = 0
> >>>>old_mmap(NULL, 170408, PROT_READ|PROT_EXEC, MAP_PRIVATE, 13, 0) =
> >>>>0x41f97000
> >>>>madvise(0x41f97000, 170408, MADV_SEQUENTIAL|0x1) = 0
> >>>>old_mmap(0x41fbc000, 16384, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED,
> >>>>13, 0x25000) = 0x41fbc000
> >>>>old_mmap(0x41fc0000, 2472, PROT_READ|PROT_WRITE,
> >>>>MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x41fc0000
> >>>>close(13) = 0
> >>>>open("/usr/local/lib/libfreetype.so.6", O_RDONLY) = -1 ENOENT (No such
> >>>>file or d irectory)
> >>>>open("tls/i686/sse2/libfreetype.so.6", O_RDONLY) = -1 ENOENT (No such file
> >>>>or directory)
> >>>>open("tls/i686/libfreetype.so.6", O_RDONLY) = -1 ENOENT (No such file or
> >>>>directory)
> >>>>open("tls/sse2/libfreetype.so.6", O_RDONLY) = -1 ENOENT (No such file or
> >>>>directory)
> >>>>open("tls/libfreetype.so.6", O_RDONLY) = -1 ENOENT (No such file or
> >>>>directory)open("i686/sse2/libfreetype.so.6", O_RDONLY) = -1 ENOENT (No
> >>>>such file or directory)
> >>>>open("i686/libfreetype.so.6", O_RDONLY) = -1 ENOENT (No such file or
> >>>>directory)open("sse2/libfreetype.so.6", O_RDONLY) = -1 ENOENT (No such
> >>>>file or directory)open("libfreetype.so.6", O_RDONLY) = -1 ENOENT (No
> >>>>such file or directory)open("/usr/lib/libfreetype.so.6", O_RDONLY) = 13
> >>>>read(13, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\360\346"...,
> >>>>512) = 512
> >>>>fstat64(13, {st_mode=S_IFREG|0755, st_size=473346, ...}) = 0
> >>>>old_mmap(NULL, 429584, PROT_READ|PROT_EXEC, MAP_PRIVATE, 13, 0) =
> >>>>0x41fc1000
> >>>>madvise(0x41fc1000, 429584, MADV_SEQUENTIAL|0x1) = 0
> >>>>old_mmap(0x42023000, 28672, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED,
> >>>>13, 0x62000) = 0x42023000
> >>>>close(13) = 0
> >>>>open("/usr/local/lib/libexpat.so.0", O_RDONLY) = -1 ENOENT (No such file
> >>>>or directory)
> >>>>open("tls/i686/sse2/libexpat.so.0", O_RDONLY) = -1 ENOENT (No such file or
> >>>>directory)
> >>>>open("tls/i686/libexpat.so.0", O_RDONLY) = -1 ENOENT (No such file or
> >>>>directory)open("tls/sse2/libexpat.so.0", O_RDONLY) = -1 ENOENT (No such
> >>>>file or directory)open("tls/libexpat.so.0", O_RDONLY) = -1 ENOENT (No
> >>>>such file or directory)open("i686/sse2/libexpat.so.0", O_RDONLY) = -1
> >>>>ENOENT (No such file or directory)
> >>>>open("i686/libexpat.so.0", O_RDONLY) = -1 ENOENT (No such file or
> >>>>directory)open("sse2/libexpat.so.0", O_RDONLY) = -1 ENOENT (No such
> >>>>file or directory)open("libexpat.so.0", O_RDONLY) = -1 ENOENT (No
> >>>>such file or directory)open("/usr/lib/libexpat.so.0", O_RDONLY) = 13
> >>>>read(13, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0P!\0\000"...,
> >>>>512) = 512
> >>>>fstat64(13, {st_mode=S_IFREG|0755, st_size=160096, ...}) = 0
> >>>>old_mmap(NULL, 124104, PROT_READ|PROT_EXEC, MAP_PRIVATE, 13, 0) =
> >>>>0x4202a000
> >>>>madvise(0x4202a000, 124104, MADV_SEQUENTIAL|0x1) = 0
> >>>>old_mmap(0x42046000, 12288, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED,
> >>>>13, 0x1c000) = 0x42046000
> >>>>close(13) = 0
> >>>>munmap(0x41a40000, 122337) = 0
> >>>>rt_sigprocmask(SIG_BLOCK, NULL, [], 8) = 0
> >>>>rt_sigprocmask(SIG_BLOCK, NULL, [], 8) = 0
> >>>>rt_sigprocmask(SIG_BLOCK, NULL, [], 8) = 0
> >>>>rt_sigprocmask(SIG_BLOCK, NULL, [], 8) = 0
> >>>>rt_sigprocmask(SIG_BLOCK, NULL, [], 8) = 0
> >>>>write(1, "[verbose class: loading \"java/be"..., 60[verbose class: loading
> >>>>"java/beans/PropertyChangeSupport"]
> >>>>) = 60
> >>>>open("/home/paris/software/sablevm//share/sablevm/sablevm-classpath/java/beans/PropertyChangeSupport.class",
> >>>>O_RDONLY) = 13
> >>>>fstat64(13, {st_mode=S_IFREG|0644, st_size=5035, ...}) = 0
> >>>>mmap2(NULL, 5035, PROT_READ, MAP_PRIVATE, 13, 0) = 0x41a40000
> >>>>munmap(0x41a40000, 5035) = 0
> >>>>close(13) = 0
> >>>>rt_sigprocmask(SIG_BLOCK, NULL, [], 8) = 0
> >>>>rt_sigprocmask(SIG_BLOCK, NULL, [], 8) = 0
> >>>>write(1, "[verbose class: loading \"gnu/jav"..., 63[verbose class: loading
> >>>>"gnu/java/awt/peer/gtk/GtkMainThread"]
> >>>>) = 63
> >>>>open("/home/paris/software/sablevm//share/sablevm/sablevm-classpath/gnu/java/awt/peer/gtk/GtkMainThread.class",
> >>>>O_RDONLY) = 13
> >>>>fstat64(13, {st_mode=S_IFREG|0644, st_size=1021, ...}) = 0
> >>>>mmap2(NULL, 1021, PROT_READ, MAP_PRIVATE, 13, 0) = 0x41a40000
> >>>>munmap(0x41a40000, 1021) = 0
> >>>>close(13) = 0
> >>>>write(1, "[verbose class: loading \"gnu/jav"..., 64[verbose class: loading
> >>>>"gnu/java/awt/peer/gtk/GtkGenericPeer"]
> >>>>) = 64
> >>>>open("/home/paris/software/sablevm//share/sablevm/sablevm-classpath/gnu/java/awt/peer/gtk/GtkGenericPeer.class",
> >>>>O_RDONLY) = 13
> >>>>fstat64(13, {st_mode=S_IFREG|0644, st_size=1045, ...}) = 0
> >>>>mmap2(NULL, 1045, PROT_READ, MAP_PRIVATE, 13, 0) = 0x41a40000
> >>>>munmap(0x41a40000, 1045) = 0
> >>>>close(13) = 0
> >>>>rt_sigprocmask(SIG_BLOCK, NULL, [], 8) = 0
> >>>>rt_sigprocmask(SIG_BLOCK, NULL, [], 8) = 0
> >>>>rt_sigprocmask(SIG_BLOCK, NULL, [], 8) = 0
> >>>>rt_sigprocmask(SIG_BLOCK, NULL, [], 8) = 0
> >>>>rt_sigprocmask(SIG_BLOCK, NULL, [], 8) = 0
> >>>>rt_sigprocmask(SIG_BLOCK, NULL, [], 8) = 0
> >>>>rt_sigprocmask(SIG_BLOCK, NULL, [], 8) = 0
> >>>>rt_sigprocmask(SIG_BLOCK, NULL, [], 8) = 0
> >>>>rt_sigprocmask(SIG_BLOCK, NULL, [], 8) = 0
> >>>>rt_sigprocmask(SIG_BLOCK, NULL, [], 8) = 0
> >>>>rt_sigprocmask(SIG_BLOCK, NULL, [], 8) = 0
> >>>>brk(0) = 0x8093000
> >>>>brk(0x80b9000) = 0x80b9000
> >>>>mmap2(NULL, 2101248, PROT_READ|PROT_WRITE|PROT_EXEC,
> >>>>MAP_PRIVATE|MAP_ANONYMOUS,-1, 0) = 0x42049000
> >>>>mprotect(0x42049000, 4096, PROT_NONE) = 0
> >>>>clone(child_stack=0x42249b08,
> >>>>flags=CLONE_VM|CLONE_FS|CLONE_FILES|CLONE_SIGHAND|CLONE_THREAD|CLONE_SYSVSEM|CLONE_SETTLS|CLONE_PARENT_SETTID|CLONE_CHILD_CLEARTID,
> >>>>parent_tidptr=0x42249bf8, {entry_number:6, base_addr:0x42249bb0,
> >>>>limit:1048575, seg_32bit:1, contents:0, read_exec_only:0,
> >>>>limit_in_pages:1, seg_not_present:0, useable:1}, child_tidptr=0x42249bf8)
> >>>>= 6137
> >>>>futex(0x8072e00, FUTEX_WAIT, 0, NULL <unfinished ...>
> >>>>
> >>>>
> >>>>
> >>>>-------------------------------------------------------
> >>>>This SF.Net email is sponsored by The 2004 JavaOne(SM) Conference
> >>>>Learn from the experts at JavaOne(SM), Sun's Worldwide Java Developer
> >>>>Conference, June 28 - July 1 at the Moscone Center in San Francisco, CA
> >>>>REGISTER AND SAVE! http://java.sun.com/javaone/sf Priority Code NWMGYKND
> >>>>_______________________________________________
> >>>>Sablevm-developer mailing list
> >>>>Sab...@li...
> >>>>https://lists.sourceforge.net/lists/listinfo/sablevm-developer
> >>>>
> >>>>
> >>>
> >>>--
> >>>Etienne M. Gagnon, Ph.D. http://www.info.uqam.ca/~egagnon/
> >>>SableVM: http://www.sablevm.org/
> >>>SableCC: http://www.sablecc.org/
> >>>
> >>>
> >>
> >
> >
> > -------------------------------------------------------
> > This SF.Net email is sponsored by The 2004 JavaOne(SM) Conference
> > Learn from the experts at JavaOne(SM), Sun's Worldwide Java Developer
> > Conference, June 28 - July 1 at the Moscone Center in San Francisco, CA
> > REGISTER AND SAVE! http://java.sun.com/javaone/sf Priority Code NWMGYKND
> > _______________________________________________
> > Sablevm-developer mailing list
> > Sab...@li...
> > https://lists.sourceforge.net/lists/listinfo/sablevm-developer
> >
>
>
|