Date: Thu, 19 Dec 2002 14:42:50 -0500 From: Charles Anderson <caa@midgard.dhs.org> To: Greg Lewis <glewis@eyesbeyond.com> Cc: Fuyuhiko Maruyama <fuyuhik8@is.titech.ac.jp>, Michael E Mercer <mmercer@nc.rr.com>, freebsd-java@FreeBSD.ORG Subject: Re: LimeWire crash gdb information Message-ID: <20021219194250.GC11902@midgard.dhs.org> In-Reply-To: <20021112163230.A95899@misty.eyesbeyond.com> References: <3DBAE791.27A93619@nc.rr.com> <20021027083816.B10962@misty.eyesbeyond.com> <3DBB49F8.941D3E09@nc.rr.com> <3DBB4CEA.E0DC7E1C@nc.rr.com> <3DBB5250.8DA88B27@nc.rr.com> <20021030172314.A31631@misty.eyesbeyond.com> <55of97wizj.wl@dittohead.is.titech.ac.jp> <20021112163230.A95899@misty.eyesbeyond.com>
index | next in thread | previous in thread | raw e-mail
I just had limewire crash while running java_g, so I poked around a bit.
I found this.
(gdb) where
#0 0x280b8b58 in kill () from /usr/lib/libc.so.4
#1 0x280fa109 in abort () from /usr/lib/libc.so.4
#2 0x281765b9 in Abort ()
at ../../../src/share/javavm/runtime/interpreter.c:1449
#3 0x281b3e95 in panic (
format=0x2807df80 "\"%s\", line %d: assertion failure\n")
at ../../../src/share/javavm/runtime/util.c:126
#4 0x28072dd0 in open (fname=0x280fb600 ".", flags=0)
at ../../../../src/solaris/hpi/green_threads/src/iomgr.c:744
#5 0x28094d52 in realpath () from /usr/lib/libc.so.4
#6 0x2c339be8 in canonicalize (
original=0x8c77f00 "/home/mp3/work/Clash_-_Lost_In_The_Supermarket.mp3",
resolved=0x2e2b557c "/home/mp3/work/Clash_-_Clampdown.mp3", len=1024)
at ../../../src/solaris/native/java/io/canonicalize_md.c:188
#7 0x2c3389ee in Java_java_io_UnixFileSystem_canonicalize (env=0x85f1e04,
this=0x2e2b59d0, pathname=0x887d194)
at ../../../src/solaris/native/java/io/UnixFileSystem_md.c:119
#8 0x28177768 in invoke_O_O (o=0x28ea91b0, mb=0x8106700, args_size=2,
ee=0x85f1e04)
at ../../../build/bsd-i386/tmp/java/java.lang/jvm/obj_g/invokers.c:555
#9 0x28183126 in ExecuteJava_C (initial_pc=0x2e2b5ee8 "Ö\r\001±",
ee=0x85f1e04) at ../../../src/share/javavm/runtime/executeJava.c:1579
#10 0x28174982 in do_execute_java_method_vararg (ee=0x85f1e04, obj=0x28e77cd8,
method_name=0x8053b38 "run", method_signature=0x8053258 "()V", mb=0x0,
isStaticCall=FALSE,
args=0x2e2b5f70 "\200\036_\b\004\036_\b\230_+.')\e(l)\e(\004\036_\b¸_+.Ì)\e(Ø|ç(\004\036_\b¸_+.½)\e(l)\e(è_+.\020Ì\n(\003", otherBits=0x0,
shortFloats=FALSE) at ../../../src/share/javavm/runtime/interpreter.c:573
#11 0x28174178 in execute_java_dynamic_method (ee=0x85f1e04, obj=0x28e77cd8,
method_name=0x281c3ea0 "run", signature=0x281c42de "()V")
at ../../../src/share/javavm/runtime/interpreter.c:288
#12 0x2819fbc8 in ThreadRT0 (p=0x28e77cd8)
at ../../../src/share/javavm/runtime/jvm.c:2101
#13 0x281b29cc in saveStackBase (args=0x2819fb74)
at ../../../src/share/javavm/runtime/threads.c:139
#14 0x2807af39 in start_func (func=0x281b296c <saveStackBase>, args=0xbfbfdd90)
at ../../../../src/solaris/hpi/green_threads/src/threads_md.c:351
#15 0x0 in ?? ()
Boiled down to this hunk of code.
735
736 while(1) {
737 newfd = (*systable[SYS_OPEN].addr)(fname, flags, mode);
738 if ((newfd != -1) ||
739 ((errno != EAGAIN) && (errno != EINTR))) {
740 break;
741 }
742 }
743
744 SIMPLE_INITFD(newfd, open);
#define SIMPLE_INITFD(newfd, funcname) \
if (1) { \
if (newfd >= 0) { \
Log1(1, #funcname " fd: %d \n", newfd); \
sysAssert(fd_flags[newfd] == 0); \
fd_flags[newfd] = 0; \
if (initialize_monitors(newfd) == HPI_FALSE) { /* Out of memory */ \
(*systable[SYS_CLOSE].addr)(newfd); /* Close new fd */ \
errno = ENOMEM; \
newfd = -1; \
} \
} else { \
Log1(1, #funcname " error: %d\n", errno); \
} \
} else \
((void) 0)
fd_flags[newfd] is not zero
(gdb) print newfd
$1 = 1024
whats newfd allocated at?
#if defined(__FreeBSD__) || defined(__NetBSD__) || defined(__OpenBSD__) || defined(__bsdi__)
max_files = MIN(FD_SETSIZE, nbr_files.rlim_cur);
#else
max_files = nbr_files.rlim_cur;
#endif
fdmon = (sys_mon_t **) calloc(max_files, sizeof(sys_mon_t *));
if (fdmon == 0) {
VM_CALL(panic)("out of memory"); /* Fatal startup error */
}
for (i = 0; i < PREALLOCATE_FDS; ++i) {
if (initialize_monitors(i) == HPI_FALSE) {
VM_CALL(panic)("out of memory"); /* Fatal startup error */
}
}
fd_flags = (char *) calloc(max_files, sizeof(char));
# ulimit -n
15360 (It's set pretty big because samba likes lots of fds.)
FD_SETSIZE? Not redefined anywhere....
# grep FD_SETSIZE /usr/include/sys/types.h
* FD_SETSIZE may be defined by the user, but the default here should
#ifndef FD_SETSIZE
#define FD_SETSIZE 1024
oops, no wonder it didn't like the 1024th fd. Maybe that MIN should be MAX?
I'm compiling right now, to see how this works.
-Charlie
--
Charles Anderson caa@columbus.rr.com
No quote, no nothin'
To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-java" in the body of the message
help
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20021219194250.GC11902>
