Hi, not sure if i'm here in the right forum.
I have the problem (%GTM-F-SIGACCERR) that sporadically happens after millions (Sometimes after 2, sometimes after 10 Millions) of calls into the call-in interface. I'm using the call-in interface via the Java JNI interface which is single-threaded.
%GTM-F-KILLBYSIGSINFO1, GT.M process 3498 has been killed by a signal 11 at address 0x00000000 (vaddr 0xB7845210)
%GTM-F-SIGACCERR, Signal was caused by invalid permissions for mapped object.
uname -a gives Linux rhel432 2.6.9-34.ELsmp #1 SMP Wed Mar 8 00:27:03 CST 2006 i686 athlon i386 GNU/Linux
gtm Version is latest download from sourceforge.
I boot linux with the 'noexec=off' option.
Any ideas?
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
thank's a lot for your answer. Sorry, youre right. I gave not so much information. So try to answer your questions here.
1. I'm using Sun JDK 1.5_012 and starting the java program simply from the shell (java -cp . de.linwave.gtm.GTMTest) which then calls via JNI a simple M procedure to SET and GET the value of a global.
2. No, there are no corefiles.
3. No, there is no memory leak. Process doesn't grow.
I've made some more experiments and it seems to me that this problem happens only on the Linux SMP Kernel. When running with the standard kernel (not SMP) then it seems to run forever.
Will make some more tests with more current OS-Versions and try also SUSE SLES.
Kind regards
Lothar
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
There should be a core dump. Let's try to make sure that core dumps are working. On a regular process, kill it before it dies with kill -4. That should create a core dump, and if it doesn't check, your shell settings and/or Linux to get core dumps working first. Without core dumps, debugging is difficult.
Also, I wonder if running on an SMP kernel somehow turns on threading in Java? GT.M is definitely not thread-safe, and if multiple threads are somehow turned on, bad things will happen.
Regards
-- Bhaskar
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
public class GTM_FirstSteps1 implements Runnable {
static {
System.loadLibrary("gtm_ci");
}
public native void initGTM();
public native void closeGTM();
public native void set(String globalName, String value);
public native String get(String globalName);
public native String order(String globalName);
public native String query(String globalName);
public static final long MAX = 10000000;
Thread t1;
public GTM_FirstSteps1() {
initGTM();
t1 = new Thread(this, "1");
t1.start();
}
public void run() {
// Create new records
long t1 = System.currentTimeMillis();
for (int i = 0; i < MAX; i++) {
long index = i + System.currentTimeMillis();
set("^Person(" + index + ")", "Some Person Name - Person with idx=" + index);
String person = get("^Person(" + index + ")");
if (person == null || "".equals(person)) {
System.out.println("Person with index " + index + " not found");
break;
}
if (i % 100000 == 0) {
long td = System.currentTimeMillis() - t1;
double avg = (double) td / (double) i;
System.out.println(i + " index=" + index + " avg=" + avg + " ms " + (td / 1000) + " Sek");
}
}
closeGTM();
}
/**
* @param args
*/
public static void main(String[] args) {
GTM_FirstSteps1 gtm = new GTM_FirstSteps1();
}
}
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Hello Bhaskar,
i followed your instructions and was able to produce coredump files. The curious thing is that they are not always created.
I've have also updated the Environment (up2date of OS and Java 1.6 latest).
Please let me know if you are interested in the core files. I will make these then available with scp.
Hope this helps. If i can provide more pleas let me know.
Kind regards.
Lothar
The Environment
[ljoeckel@rhel432 ~]$ uname -a
Linux rhel432 2.6.9-78.0.5.ELsmp #1 SMP Wed Oct 8 07:12:03 EDT 2008 i686 athlon i386 GNU/Linux
[ljoeckel@rhel432 ~]$ java -version
java version "1.6.0_10"
Java(TM) SE Runtime Environment (build 1.6.0_10-b33)
Java HotSpot(TM) Client VM (build 11.0-b15, mixed mode, sharing)
[ljoeckel@rhel432 ~]$
The Procedure
1. Set the 'ulimit' option for the user
ulimit -c unlimited
2. Run the test and 'kill -4' from another terminal
...
2100000 index=1226085106180 avg=0.03654380952380953 ms 76 Sek
2200000 index=1226085210148 avg=0.036686363636363635 ms 80 Sek
%GTM-F-KILLBYSIGUINFO, GT.M process 3826 has been killed by a signal 4 from process 3838 with userid number 500
Quit (core dumped)
[ljoeckel@rhel432 bin]$
4. Running the test again and waiting for the crash
*** FIRST CRASH ***
6000000 index=1226089359793 avg=0.0368285 ms 220 Sek
6100000 index=1226089463566 avg=0.03684327868852459 ms 224 Sek
%GTM-F-ASSERT, Assert failed /usr/local/src/gtm/sr_unix/add_inter.c line 68
%GTM-F-ASSERT, Assert failed /usr/local/src/gtm/sr_unix/add_inter.c line 68
%GTM-F-ASSERT, Assert failed /usr/local/src/gtm/sr_unix/add_inter.c line 68
%GTM-E-GVRUNDOWN, Error during global database rundown
[ljoeckel@rhel432 bin]$
[ljoeckel@rhel432 bin]$ ll core*
-rw------- 1 ljoeckel ljoeckel 45703168 Nov 7 19:36 core.3826
-rw------- 1 ljoeckel ljoeckel 45420544 Nov 7 19:36 core.3867
-rw------- 1 ljoeckel ljoeckel 45404160 Nov 7 19:42 core.3944
-rw------- 1 ljoeckel ljoeckel 45404160 Nov 7 19:42 core.3945
-rw------- 1 ljoeckel ljoeckel 45404160 Nov 7 19:42 core.3946
-rw------- 1 ljoeckel ljoeckel 45404160 Nov 7 19:42 core.3947
[ljoeckel@rhel432 bin]$
=====================================================================
FROM 'core.3944'
(gdb) bt
#0 0x00ad07a2 in _dl_sysinfo_int80 () from /lib/ld-linux.so.2
#1 0x00b11cc6 in kill () from /lib/tls/libc.so.6
#2 0xb56a509a in gtm_dump_core () at /usr/local/src/gtm/sr_unix/gtm_dump_core.c:55
#3 0xb56a5b0c in gtm_fork_n_core () at /usr/local/src/gtm/sr_unix/gtm_fork_n_core.c:161
#4 0xb5693a5e in ch_cond_core () at /usr/local/src/gtm/sr_unix/ch_cond_core.c:53
#5 0xb565a5d9 in rts_error (argcnt=5) at /usr/local/src/gtm/sr_unix/rts_error.c:75
#6 0xb568fbfb in add_inter (val=-1, addr=0xb5316360, latch=0xb5316298)
at /usr/local/src/gtm/sr_unix/add_inter.c:68
#7 0xb5686375 in wcs_wtstart (region=0xb5824cc8, writes=0)
at /usr/local/src/gtm/sr_unix/wcs_wtstart.c:392
#8 0xb5736c25 in wcs_stale (tid=-1249751864, hd_len=4, region=0x80dd370)
at /usr/local/src/gtm/sr_port/t_end_sysops.c:1755
#9 0xb56a3f5d in timer_handler (why=14) at /usr/local/src/gtm/sr_unix/gt_timers.c:565
#10 <signal handler called>
#11 0x00ad07a2 in _dl_sysinfo_int80 () from /lib/ld-linux.so.2
#12 0x00d3ef7c in pthread_cond_timedwait@@GLIBC_2.3.2 () from /lib/tls/libpthread.so.0
#13 0x00d3f3f5 in pthread_cond_timedwait@GLIBC_2.0 () from /lib/tls/libpthread.so.0
#14 0x0631017e in os::PlatformEvent::park ()
from /usr/java/jdk1.6.0_10/jre/lib/i386/client/libjvm.so
#15 0x062fcfa9 in Monitor::IWait ()
from /usr/java/jdk1.6.0_10/jre/lib/i386/client/libjvm.so
#16 0x062fd5c1 in Monitor::wait ()
from /usr/java/jdk1.6.0_10/jre/lib/i386/client/libjvm.so
#17 0x063d9f44 in VMThread::loop ()
from /usr/java/jdk1.6.0_10/jre/lib/i386/client/libjvm.so
#18 0x063d98cf in VMThread::run ()
from /usr/java/jdk1.6.0_10/jre/lib/i386/client/libjvm.so
#19 0x063108a9 in java_start () from /usr/java/jdk1.6.0_10/jre/lib/i386/client/libjvm.so
#20 0x00d3c3cc in start_thread () from /lib/tls/libpthread.so.0
#21 0x00bb596e in clone () from /lib/tls/libc.so.6
(gdb)
=====================================================================
FROM 'core.3945'
(gdb) bt
#0 0x00ad07a2 in _dl_sysinfo_int80 () from /lib/ld-linux.so.2
#1 0x00b11cc6 in kill () from /lib/tls/libc.so.6
#2 0xb56a509a in gtm_dump_core () at /usr/local/src/gtm/sr_unix/gtm_dump_core.c:55
#3 0xb56a5b0c in gtm_fork_n_core () at /usr/local/src/gtm/sr_unix/gtm_fork_n_core.c:161
#4 0xb5693a5e in ch_cond_core () at /usr/local/src/gtm/sr_unix/ch_cond_core.c:53
#5 0xb565a5d9 in rts_error (argcnt=5) at /usr/local/src/gtm/sr_unix/rts_error.c:75
#6 0xb568fbfb in add_inter (val=-1, addr=0xb5316380, latch=0xb5316298)
at /usr/local/src/gtm/sr_unix/add_inter.c:68
#7 0xb5662e99 in secshr_db_clnup (secshr_state=COMMIT_INCOMPLETE)
at /usr/local/src/gtm/sr_port/secshr_db_clnup.c:1582
#8 0xb572b43e in t_commit_cleanup (status=cdb_sc_uperr, signal=150374524)
at /usr/local/src/gtm/sr_port/t_commit_cleanup.c:212
#9 0xb572a5a7 in t_ch (arg=150374524) at /usr/local/src/gtm/sr_port/t_ch.c:83
#10 0xb565a63c in rts_error (argcnt=5) at /usr/local/src/gtm/sr_unix/rts_error.c:75
#11 0xb568fbfb in add_inter (val=-1, addr=0xb5316360, latch=0xb5316298)
at /usr/local/src/gtm/sr_unix/add_inter.c:68
#12 0xb5686375 in wcs_wtstart (region=0xb5824cc8, writes=0)
at /usr/local/src/gtm/sr_unix/wcs_wtstart.c:392
#13 0xb5736c25 in wcs_stale (tid=-1249751864, hd_len=4, region=0x80dd370)
at /usr/local/src/gtm/sr_port/t_end_sysops.c:1755
#14 0xb56a3f5d in timer_handler (why=14) at /usr/local/src/gtm/sr_unix/gt_timers.c:565
#15 <signal handler called>
#16 0x00ad07a2 in _dl_sysinfo_int80 () from /lib/ld-linux.so.2
#17 0x00d3ef7c in pthread_cond_timedwait@@GLIBC_2.3.2 () from /lib/tls/libpthread.so.0
#18 0x00d3f3f5 in pthread_cond_timedwait@GLIBC_2.0 () from /lib/tls/libpthread.so.0
#19 0x0631017e in os::PlatformEvent::park ()
from /usr/java/jdk1.6.0_10/jre/lib/i386/client/libjvm.so
#20 0x062fcfa9 in Monitor::IWait ()
from /usr/java/jdk1.6.0_10/jre/lib/i386/client/libjvm.so
#21 0x062fd5c1 in Monitor::wait ()
from /usr/java/jdk1.6.0_10/jre/lib/i386/client/libjvm.so
#22 0x063d9f44 in VMThread::loop ()
from /usr/java/jdk1.6.0_10/jre/lib/i386/client/libjvm.so
#23 0x063d98cf in VMThread::run ()
from /usr/java/jdk1.6.0_10/jre/lib/i386/client/libjvm.so
---Type <return> to continue, or q <return> to quit---
#24 0x063108a9 in java_start () from /usr/java/jdk1.6.0_10/jre/lib/i386/client/libjvm.so
#25 0x00d3c3cc in start_thread () from /lib/tls/libpthread.so.0
#26 0x00bb596e in clone () from /lib/tls/libc.so.6
(gdb)
=====================================================================
FROM 'core.3946'
(gdb) bt
#0 0x00ad07a2 in _dl_sysinfo_int80 () from /lib/ld-linux.so.2
#1 0x00b11cc6 in kill () from /lib/tls/libc.so.6
#2 0xb56a509a in gtm_dump_core () at /usr/local/src/gtm/sr_unix/gtm_dump_core.c:55
#3 0xb56a5b0c in gtm_fork_n_core () at /usr/local/src/gtm/sr_unix/gtm_fork_n_core.c:161
#4 0xb5693a5e in ch_cond_core () at /usr/local/src/gtm/sr_unix/ch_cond_core.c:53
#5 0xb565a5d9 in rts_error (argcnt=5) at /usr/local/src/gtm/sr_unix/rts_error.c:75
#6 0xb568fbfb in add_inter (val=-1, addr=0xb53162e0, latch=0xb5316298)
at /usr/local/src/gtm/sr_unix/add_inter.c:68
#7 0xb575e94d in gds_rundown () at /usr/local/src/gtm/sr_unix/gds_rundown.c:209
#8 0xb56a9d5f in gv_rundown () at /usr/local/src/gtm/sr_port/gv_rundown.c:88
#9 0xb56a54e9 in gtm_exit_handler () at /usr/local/src/gtm/sr_unix/gtm_exit_handler.c:91
#10 0x00b145a7 in exit () from /lib/tls/libc.so.6
#11 0xb5665e0a in stop_image_no_core () at /usr/local/src/gtm/sr_unix/stop_image.c:70
#12 0xb56432f0 in mdb_condition_handler (arg=150374524)
at /usr/local/src/gtm/sr_port/mdb_condition_handler.c:395
#13 0xb565a63c in rts_error (argcnt=5) at /usr/local/src/gtm/sr_unix/rts_error.c:75
#14 0xb568fbfb in add_inter (val=-1, addr=0xb5316380, latch=0xb5316298)
at /usr/local/src/gtm/sr_unix/add_inter.c:68
#15 0xb5662e99 in secshr_db_clnup (secshr_state=COMMIT_INCOMPLETE)
at /usr/local/src/gtm/sr_port/secshr_db_clnup.c:1582
#16 0xb572b43e in t_commit_cleanup (status=cdb_sc_uperr, signal=150374524)
at /usr/local/src/gtm/sr_port/t_commit_cleanup.c:212
#17 0xb572a5a7 in t_ch (arg=150374524) at /usr/local/src/gtm/sr_port/t_ch.c:83
#18 0xb565a63c in rts_error (argcnt=5) at /usr/local/src/gtm/sr_unix/rts_error.c:75
#19 0xb568fbfb in add_inter (val=-1, addr=0xb5316360, latch=0xb5316298)
at /usr/local/src/gtm/sr_unix/add_inter.c:68
#20 0xb5686375 in wcs_wtstart (region=0xb5824cc8, writes=0)
at /usr/local/src/gtm/sr_unix/wcs_wtstart.c:392
#21 0xb5736c25 in wcs_stale (tid=-1249751864, hd_len=4, region=0x80dd370)
at /usr/local/src/gtm/sr_port/t_end_sysops.c:1755
#22 0xb56a3f5d in timer_handler (why=14) at /usr/local/src/gtm/sr_unix/gt_timers.c:565
#23 <signal handler called>
#24 0x00ad07a2 in _dl_sysinfo_int80 () from /lib/ld-linux.so.2
#25 0x00d3ef7c in pthread_cond_timedwait@@GLIBC_2.3.2 () from /lib/tls/libpthread.so.0
#26 0x00d3f3f5 in pthread_cond_timedwait@GLIBC_2.0 () from /lib/tls/libpthread.so.0
#27 0x0631017e in os::PlatformEvent::park ()
from /usr/java/jdk1.6.0_10/jre/lib/i386/client/libjvm.so
#28 0x062fcfa9 in Monitor::IWait ()
from /usr/java/jdk1.6.0_10/jre/lib/i386/client/libjvm.so
#29 0x062fd5c1 in Monitor::wait ()
from /usr/java/jdk1.6.0_10/jre/lib/i386/client/libjvm.so
#30 0x063d9f44 in VMThread::loop ()
from /usr/java/jdk1.6.0_10/jre/lib/i386/client/libjvm.so
#31 0x063d98cf in VMThread::run ()
---Type <return> to continue, or q <return> to quit---
from /usr/java/jdk1.6.0_10/jre/lib/i386/client/libjvm.so
#32 0x063108a9 in java_start () from /usr/java/jdk1.6.0_10/jre/lib/i386/client/libjvm.so
#33 0x00d3c3cc in start_thread () from /lib/tls/libpthread.so.0
#34 0x00bb596e in clone () from /lib/tls/libc.so.6
(gdb)
=====================================================================
FROM 'core.3947'
(gdb) bt
#0 0x00ad07a2 in _dl_sysinfo_int80 () from /lib/ld-linux.so.2
#1 0x00b11cc6 in kill () from /lib/tls/libc.so.6
#2 0xb56a509a in gtm_dump_core () at /usr/local/src/gtm/sr_unix/gtm_dump_core.c:55
#3 0xb56a5b0c in gtm_fork_n_core () at /usr/local/src/gtm/sr_unix/gtm_fork_n_core.c:161
#4 0xb5693a5e in ch_cond_core () at /usr/local/src/gtm/sr_unix/ch_cond_core.c:53
#5 0xb565a5d9 in rts_error (argcnt=5) at /usr/local/src/gtm/sr_unix/rts_error.c:75
#6 0xb568fbfb in add_inter (val=-1, addr=0xb53162e0, latch=0xb5316298)
at /usr/local/src/gtm/sr_unix/add_inter.c:68
#7 0xb5760263 in gds_rundown_ch (arg=150374524)
at /usr/local/src/gtm/sr_unix/gds_rundown.c:615
#8 0xb565a63c in rts_error (argcnt=5) at /usr/local/src/gtm/sr_unix/rts_error.c:75
#9 0xb568fbfb in add_inter (val=-1, addr=0xb53162e0, latch=0xb5316298)
at /usr/local/src/gtm/sr_unix/add_inter.c:68
#10 0xb575e94d in gds_rundown () at /usr/local/src/gtm/sr_unix/gds_rundown.c:209
#11 0xb56a9d5f in gv_rundown () at /usr/local/src/gtm/sr_port/gv_rundown.c:88
#12 0xb56a54e9 in gtm_exit_handler () at /usr/local/src/gtm/sr_unix/gtm_exit_handler.c:91
#13 0x00b145a7 in exit () from /lib/tls/libc.so.6
#14 0xb5665e0a in stop_image_no_core () at /usr/local/src/gtm/sr_unix/stop_image.c:70
#15 0xb56432f0 in mdb_condition_handler (arg=150374524)
at /usr/local/src/gtm/sr_port/mdb_condition_handler.c:395
#16 0xb565a63c in rts_error (argcnt=5) at /usr/local/src/gtm/sr_unix/rts_error.c:75
#17 0xb568fbfb in add_inter (val=-1, addr=0xb5316380, latch=0xb5316298)
at /usr/local/src/gtm/sr_unix/add_inter.c:68
#18 0xb5662e99 in secshr_db_clnup (secshr_state=COMMIT_INCOMPLETE)
at /usr/local/src/gtm/sr_port/secshr_db_clnup.c:1582
#19 0xb572b43e in t_commit_cleanup (status=cdb_sc_uperr, signal=150374524)
at /usr/local/src/gtm/sr_port/t_commit_cleanup.c:212
#20 0xb572a5a7 in t_ch (arg=150374524) at /usr/local/src/gtm/sr_port/t_ch.c:83
#21 0xb565a63c in rts_error (argcnt=5) at /usr/local/src/gtm/sr_unix/rts_error.c:75
#22 0xb568fbfb in add_inter (val=-1, addr=0xb5316360, latch=0xb5316298)
at /usr/local/src/gtm/sr_unix/add_inter.c:68
#23 0xb5686375 in wcs_wtstart (region=0xb5824cc8, writes=0)
at /usr/local/src/gtm/sr_unix/wcs_wtstart.c:392
#24 0xb5736c25 in wcs_stale (tid=-1249751864, hd_len=4, region=0x80dd370)
at /usr/local/src/gtm/sr_port/t_end_sysops.c:1755
#25 0xb56a3f5d in timer_handler (why=14) at /usr/local/src/gtm/sr_unix/gt_timers.c:565
#26 <signal handler called>
#27 0x00ad07a2 in _dl_sysinfo_int80 () from /lib/ld-linux.so.2
#28 0x00d3ef7c in pthread_cond_timedwait@@GLIBC_2.3.2 () from /lib/tls/libpthread.so.0
#29 0x00d3f3f5 in pthread_cond_timedwait@GLIBC_2.0 () from /lib/tls/libpthread.so.0
#30 0x0631017e in os::PlatformEvent::park ()
from /usr/java/jdk1.6.0_10/jre/lib/i386/client/libjvm.so
#31 0x062fcfa9 in Monitor::IWait ()
from /usr/java/jdk1.6.0_10/jre/lib/i386/client/libjvm.so
#32 0x062fd5c1 in Monitor::wait ()
from /usr/java/jdk1.6.0_10/jre/lib/i386/client/libjvm.so
#33 0x063d9f44 in VMThread::loop ()
from /usr/java/jdk1.6.0_10/jre/lib/i386/client/libjvm.so
#34 0x063d98cf in VMThread::run ()
from /usr/java/jdk1.6.0_10/jre/lib/i386/client/libjvm.so
#35 0x063108a9 in java_start () from /usr/java/jdk1.6.0_10/jre/lib/i386/client/libjvm.so
#36 0x00d3c3cc in start_thread () from /lib/tls/libpthread.so.0
#37 0x00bb596e in clone () from /lib/tls/libc.so.6
(gdb)
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Hello Bhaskar, sorry i'm a little late with my answer. Lot of work to do.
What i'm going to do is to implement a Object-Oriented storage mechanism on top of GT.M. So the main functionality will be implemented in Java itself. I will use M only as a gateway to the Database. So in the meantime i have developed a smal prototype that will do the stuff.
i.E
GTM gtm = GTM.getInstance();
Person p = new Person("Lothar");
gtm.store(p);
(NO configuration files or @annotations required) Takes every plain Java Object.
This will work for all primitive Java types, Collections and Arrays. Also References to User classes are also implemented as well.
The Query-Interface looks like:
ObjectSet<Person> persons = gtm.query(Person.class);
for (Person person : persons) {
System.out.println("Name=" + person.getName());
}
So the main idea is to have a very similiar API as db4o has.
The main advantage over db4o will be a mature, rock-solid and professional database engine with all the stuff customers need.
So i plan to spawn another Project here on sourceforge.
What do you think?
Kind regards
Lothar
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Hi, not sure if i'm here in the right forum.
I have the problem (%GTM-F-SIGACCERR) that sporadically happens after millions (Sometimes after 2, sometimes after 10 Millions) of calls into the call-in interface. I'm using the call-in interface via the Java JNI interface which is single-threaded.
%GTM-F-KILLBYSIGSINFO1, GT.M process 3498 has been killed by a signal 11 at address 0x00000000 (vaddr 0xB7845210)
%GTM-F-SIGACCERR, Signal was caused by invalid permissions for mapped object.
uname -a gives Linux rhel432 2.6.9-34.ELsmp #1 SMP Wed Mar 8 00:27:03 CST 2006 i686 athlon i386 GNU/Linux
gtm Version is latest download from sourceforge.
I boot linux with the 'noexec=off' option.
Any ideas?
I don't have any ideas off the top of my head, but to start:
1. What is your setup - Java implementation, is the call sequence shell to Java to M, etc.?
2. Are there any core files?
3. Might there be a memory leak? Can you monitor the process and see whether it keeps growing before dying?
Thanks.
Regards
-- Bhaskar
thank's a lot for your answer. Sorry, youre right. I gave not so much information. So try to answer your questions here.
1. I'm using Sun JDK 1.5_012 and starting the java program simply from the shell (java -cp . de.linwave.gtm.GTMTest) which then calls via JNI a simple M procedure to SET and GET the value of a global.
2. No, there are no corefiles.
3. No, there is no memory leak. Process doesn't grow.
I've made some more experiments and it seems to me that this problem happens only on the Linux SMP Kernel. When running with the standard kernel (not SMP) then it seems to run forever.
Will make some more tests with more current OS-Versions and try also SUSE SLES.
Kind regards
Lothar
Lothar --
There should be a core dump. Let's try to make sure that core dumps are working. On a regular process, kill it before it dies with kill -4. That should create a core dump, and if it doesn't check, your shell settings and/or Linux to get core dumps working first. Without core dumps, debugging is difficult.
Also, I wonder if running on an SMP kernel somehow turns on threading in Java? GT.M is definitely not thread-safe, and if multiple threads are somehow turned on, bad things will happen.
Regards
-- Bhaskar
Here are the relevant source files:
calltab.ci
get : gtm_char_t* get^piece(I:gtm_char_t*)
set : void set^piece(I:gtm_char_t*, I:gtm_char_t*)
kill : void kill^piece(I:gtm_char_t*)
order : gtm_char_t* order^piece(I:gtm_char_t*)
query : gtm_char_t* query^piece(I:gtm_char_t*)
=============================================
piece.m:
set(var,value) ;
set @var=value
quit
get(var) ;
quit $get(@var)
kill(var) ;
kill @var
quit
order(var) ;
quit $order(@var)
query(var) ;
quit $query(@var)
=============================================
gtmci.c
#include <string.h>
#include "gtmxc_types.h"
#include "de_linwave_gtm_GTM.h"
gtm_status_t initgtm();
gtm_status_t closegtm();
gtm_status_t checkerr(JNIEnv *env, gtm_status_t status);
gtm_status_t callgtm();
#define BUF_LEN 1024
#define KEYLEN 512
#define VARLEN 32767
#ifdef __cplusplus
extern "C" {
#endif
JNIEXPORT void JNICALL Java_de_linwave_gtm_GTM_initGTM (JNIEnv *env, jobject obj) {
gtm_status_t status = gtm_init();
checkerr(0, status);
}
JNIEXPORT void JNICALL Java_de_linwave_gtm_GTM_closeGTM (JNIEnv *env, jobject obj) {
gtm_status_t status = gtm_exit();
checkerr(0, status);
}
JNIEXPORT void JNICALL Java_de_linwave_gtm_GTM_SET (JNIEnv *env, jobject obj, jstring globalName, jstring globalContent) {
gtm_char_t varcontent[VARLEN];
gtm_char_t varname[KEYLEN];
const char *strKey = (*env)->GetStringUTFChars(env, globalName, 0);
strcpy(varname, strKey);
const char *strVal = (*env)->GetStringUTFChars(env, globalContent, 0);
strcpy(varcontent, strVal);
checkerr(env, gtm_ci("set", varname, varcontent));
(*env)->ReleaseStringUTFChars(env, globalName, strKey);
(*env)->ReleaseStringUTFChars(env, globalContent, strVal);
}
JNIEXPORT jstring JNICALL Java_de_linwave_gtm_GTM_GET (JNIEnv *env, jobject obj, jstring globalName) {
gtm_char_t varcontent[VARLEN];
gtm_char_t varname[KEYLEN];
const char *str = (*env)->GetStringUTFChars(env, globalName, 0);
strcpy(varname, str);
checkerr(env, gtm_ci("get", varcontent, varname));
(*env)->ReleaseStringUTFChars(env, globalName, str);
if (strlen(varcontent) == 0)
return NULL;
else
return (*env)->NewStringUTF(env, varcontent);
}
JNIEXPORT void JNICALL Java_de_linwave_gtm_GTM_KILL (JNIEnv *env, jobject obj, jstring globalName) {
gtm_char_t varname[KEYLEN];
const char *str = (*env)->GetStringUTFChars(env, globalName, 0);
strcpy(varname, str);
checkerr(env, gtm_ci("kill", varname));
(*env)->ReleaseStringUTFChars(env, globalName, str);
}
JNIEXPORT jstring JNICALL Java_de_linwave_gtm_GTM_ORDER (JNIEnv *env, jobject obj, jstring globalName) {
gtm_char_t varname[KEYLEN];
gtm_char_t varcontent[KEYLEN];
const char *str = (*env)->GetStringUTFChars(env, globalName, 0);
strcpy(varname, str);
checkerr(env, gtm_ci("order", varcontent, varname));
(*env)->ReleaseStringUTFChars(env, globalName, str);
if (strlen(varcontent) == 0)
return NULL;
else
return (*env)->NewStringUTF(env, varcontent);
}
JNIEXPORT jstring JNICALL Java_de_linwave_gtm_GTM_QUERY (JNIEnv *env, jobject obj, jstring globalName) {
gtm_char_t varname[KEYLEN];
gtm_char_t varcontent[KEYLEN];
const char *str = (*env)->GetStringUTFChars(env, globalName, 0);
strcpy(varname, str);
checkerr(env, gtm_ci("query", varcontent, varname));
(*env)->ReleaseStringUTFChars(env, globalName, str);
if (strlen(varcontent) == 0)
return NULL;
else
return (*env)->NewStringUTF(env, varcontent);
}
#ifdef __cplusplus
}
#endif
gtm_status_t checkerr(JNIEnv *env, gtm_status_t status) {
gtm_char_t msgbuf[BUF_LEN];
if (status != 0)
{
gtm_zstatus(msgbuf, BUF_LEN);
fprintf(stderr, "%s\n", msgbuf);
if (env != 0) {
// (*env)->ThrowNew(env,
// (*env)->FindClass("java/lang/RuntimeException"),
// "Problem running gtm call-in");
}
}
return status;
}
=============================================
package de.linwave.gtm;
import java.util.Random;
public class GTM_FirstSteps1 implements Runnable {
static {
System.loadLibrary("gtm_ci");
}
public native void initGTM();
public native void closeGTM();
public native void set(String globalName, String value);
public native String get(String globalName);
public native String order(String globalName);
public native String query(String globalName);
public static final long MAX = 10000000;
Thread t1;
public GTM_FirstSteps1() {
initGTM();
t1 = new Thread(this, "1");
t1.start();
}
public void run() {
// Create new records
long t1 = System.currentTimeMillis();
for (int i = 0; i < MAX; i++) {
long index = i + System.currentTimeMillis();
set("^Person(" + index + ")", "Some Person Name - Person with idx=" + index);
String person = get("^Person(" + index + ")");
if (person == null || "".equals(person)) {
System.out.println("Person with index " + index + " not found");
break;
}
if (i % 100000 == 0) {
long td = System.currentTimeMillis() - t1;
double avg = (double) td / (double) i;
System.out.println(i + " index=" + index + " avg=" + avg + " ms " + (td / 1000) + " Sek");
}
}
closeGTM();
}
/**
* @param args
*/
public static void main(String[] args) {
GTM_FirstSteps1 gtm = new GTM_FirstSteps1();
}
}
One quick question, Lothar: why are you calling from Java code to a C library to M code? Why not call M directly from Java? Thank you.
Regards
-- Bhaskar
Hello Bhaskar,
i followed your instructions and was able to produce coredump files. The curious thing is that they are not always created.
I've have also updated the Environment (up2date of OS and Java 1.6 latest).
Please let me know if you are interested in the core files. I will make these then available with scp.
Hope this helps. If i can provide more pleas let me know.
Kind regards.
Lothar
The Environment
[ljoeckel@rhel432 ~]$ uname -a
Linux rhel432 2.6.9-78.0.5.ELsmp #1 SMP Wed Oct 8 07:12:03 EDT 2008 i686 athlon i386 GNU/Linux
[ljoeckel@rhel432 ~]$ java -version
java version "1.6.0_10"
Java(TM) SE Runtime Environment (build 1.6.0_10-b33)
Java HotSpot(TM) Client VM (build 11.0-b15, mixed mode, sharing)
[ljoeckel@rhel432 ~]$
The Procedure
1. Set the 'ulimit' option for the user
ulimit -c unlimited
2. Run the test and 'kill -4' from another terminal
...
2100000 index=1226085106180 avg=0.03654380952380953 ms 76 Sek
2200000 index=1226085210148 avg=0.036686363636363635 ms 80 Sek
%GTM-F-KILLBYSIGUINFO, GT.M process 3826 has been killed by a signal 4 from process 3838 with userid number 500
Quit (core dumped)
[ljoeckel@rhel432 bin]$
3. This produces 2 corefiles
[ljoeckel@rhel432 bin]$ ll core*
-rw------- 1 ljoeckel ljoeckel 45703168 Nov 7 19:36 core.3826
-rw------- 1 ljoeckel ljoeckel 45420544 Nov 7 19:36 core.3867
[ljoeckel@rhel432 bin]$
4. Running the test again and waiting for the crash
*** FIRST CRASH ***
6000000 index=1226089359793 avg=0.0368285 ms 220 Sek
6100000 index=1226089463566 avg=0.03684327868852459 ms 224 Sek
%GTM-F-ASSERT, Assert failed /usr/local/src/gtm/sr_unix/add_inter.c line 68
%GTM-F-ASSERT, Assert failed /usr/local/src/gtm/sr_unix/add_inter.c line 68
%GTM-F-ASSERT, Assert failed /usr/local/src/gtm/sr_unix/add_inter.c line 68
%GTM-E-GVRUNDOWN, Error during global database rundown
[ljoeckel@rhel432 bin]$
[ljoeckel@rhel432 bin]$ ll core*
-rw------- 1 ljoeckel ljoeckel 45703168 Nov 7 19:36 core.3826
-rw------- 1 ljoeckel ljoeckel 45420544 Nov 7 19:36 core.3867
-rw------- 1 ljoeckel ljoeckel 45404160 Nov 7 19:42 core.3944
-rw------- 1 ljoeckel ljoeckel 45404160 Nov 7 19:42 core.3945
-rw------- 1 ljoeckel ljoeckel 45404160 Nov 7 19:42 core.3946
-rw------- 1 ljoeckel ljoeckel 45404160 Nov 7 19:42 core.3947
[ljoeckel@rhel432 bin]$
=====================================================================
FROM 'core.3944'
(gdb) bt
#0 0x00ad07a2 in _dl_sysinfo_int80 () from /lib/ld-linux.so.2
#1 0x00b11cc6 in kill () from /lib/tls/libc.so.6
#2 0xb56a509a in gtm_dump_core () at /usr/local/src/gtm/sr_unix/gtm_dump_core.c:55
#3 0xb56a5b0c in gtm_fork_n_core () at /usr/local/src/gtm/sr_unix/gtm_fork_n_core.c:161
#4 0xb5693a5e in ch_cond_core () at /usr/local/src/gtm/sr_unix/ch_cond_core.c:53
#5 0xb565a5d9 in rts_error (argcnt=5) at /usr/local/src/gtm/sr_unix/rts_error.c:75
#6 0xb568fbfb in add_inter (val=-1, addr=0xb5316360, latch=0xb5316298)
at /usr/local/src/gtm/sr_unix/add_inter.c:68
#7 0xb5686375 in wcs_wtstart (region=0xb5824cc8, writes=0)
at /usr/local/src/gtm/sr_unix/wcs_wtstart.c:392
#8 0xb5736c25 in wcs_stale (tid=-1249751864, hd_len=4, region=0x80dd370)
at /usr/local/src/gtm/sr_port/t_end_sysops.c:1755
#9 0xb56a3f5d in timer_handler (why=14) at /usr/local/src/gtm/sr_unix/gt_timers.c:565
#10 <signal handler called>
#11 0x00ad07a2 in _dl_sysinfo_int80 () from /lib/ld-linux.so.2
#12 0x00d3ef7c in pthread_cond_timedwait@@GLIBC_2.3.2 () from /lib/tls/libpthread.so.0
#13 0x00d3f3f5 in pthread_cond_timedwait@GLIBC_2.0 () from /lib/tls/libpthread.so.0
#14 0x0631017e in os::PlatformEvent::park ()
from /usr/java/jdk1.6.0_10/jre/lib/i386/client/libjvm.so
#15 0x062fcfa9 in Monitor::IWait ()
from /usr/java/jdk1.6.0_10/jre/lib/i386/client/libjvm.so
#16 0x062fd5c1 in Monitor::wait ()
from /usr/java/jdk1.6.0_10/jre/lib/i386/client/libjvm.so
#17 0x063d9f44 in VMThread::loop ()
from /usr/java/jdk1.6.0_10/jre/lib/i386/client/libjvm.so
#18 0x063d98cf in VMThread::run ()
from /usr/java/jdk1.6.0_10/jre/lib/i386/client/libjvm.so
#19 0x063108a9 in java_start () from /usr/java/jdk1.6.0_10/jre/lib/i386/client/libjvm.so
#20 0x00d3c3cc in start_thread () from /lib/tls/libpthread.so.0
#21 0x00bb596e in clone () from /lib/tls/libc.so.6
(gdb)
=====================================================================
FROM 'core.3945'
(gdb) bt
#0 0x00ad07a2 in _dl_sysinfo_int80 () from /lib/ld-linux.so.2
#1 0x00b11cc6 in kill () from /lib/tls/libc.so.6
#2 0xb56a509a in gtm_dump_core () at /usr/local/src/gtm/sr_unix/gtm_dump_core.c:55
#3 0xb56a5b0c in gtm_fork_n_core () at /usr/local/src/gtm/sr_unix/gtm_fork_n_core.c:161
#4 0xb5693a5e in ch_cond_core () at /usr/local/src/gtm/sr_unix/ch_cond_core.c:53
#5 0xb565a5d9 in rts_error (argcnt=5) at /usr/local/src/gtm/sr_unix/rts_error.c:75
#6 0xb568fbfb in add_inter (val=-1, addr=0xb5316380, latch=0xb5316298)
at /usr/local/src/gtm/sr_unix/add_inter.c:68
#7 0xb5662e99 in secshr_db_clnup (secshr_state=COMMIT_INCOMPLETE)
at /usr/local/src/gtm/sr_port/secshr_db_clnup.c:1582
#8 0xb572b43e in t_commit_cleanup (status=cdb_sc_uperr, signal=150374524)
at /usr/local/src/gtm/sr_port/t_commit_cleanup.c:212
#9 0xb572a5a7 in t_ch (arg=150374524) at /usr/local/src/gtm/sr_port/t_ch.c:83
#10 0xb565a63c in rts_error (argcnt=5) at /usr/local/src/gtm/sr_unix/rts_error.c:75
#11 0xb568fbfb in add_inter (val=-1, addr=0xb5316360, latch=0xb5316298)
at /usr/local/src/gtm/sr_unix/add_inter.c:68
#12 0xb5686375 in wcs_wtstart (region=0xb5824cc8, writes=0)
at /usr/local/src/gtm/sr_unix/wcs_wtstart.c:392
#13 0xb5736c25 in wcs_stale (tid=-1249751864, hd_len=4, region=0x80dd370)
at /usr/local/src/gtm/sr_port/t_end_sysops.c:1755
#14 0xb56a3f5d in timer_handler (why=14) at /usr/local/src/gtm/sr_unix/gt_timers.c:565
#15 <signal handler called>
#16 0x00ad07a2 in _dl_sysinfo_int80 () from /lib/ld-linux.so.2
#17 0x00d3ef7c in pthread_cond_timedwait@@GLIBC_2.3.2 () from /lib/tls/libpthread.so.0
#18 0x00d3f3f5 in pthread_cond_timedwait@GLIBC_2.0 () from /lib/tls/libpthread.so.0
#19 0x0631017e in os::PlatformEvent::park ()
from /usr/java/jdk1.6.0_10/jre/lib/i386/client/libjvm.so
#20 0x062fcfa9 in Monitor::IWait ()
from /usr/java/jdk1.6.0_10/jre/lib/i386/client/libjvm.so
#21 0x062fd5c1 in Monitor::wait ()
from /usr/java/jdk1.6.0_10/jre/lib/i386/client/libjvm.so
#22 0x063d9f44 in VMThread::loop ()
from /usr/java/jdk1.6.0_10/jre/lib/i386/client/libjvm.so
#23 0x063d98cf in VMThread::run ()
from /usr/java/jdk1.6.0_10/jre/lib/i386/client/libjvm.so
---Type <return> to continue, or q <return> to quit---
#24 0x063108a9 in java_start () from /usr/java/jdk1.6.0_10/jre/lib/i386/client/libjvm.so
#25 0x00d3c3cc in start_thread () from /lib/tls/libpthread.so.0
#26 0x00bb596e in clone () from /lib/tls/libc.so.6
(gdb)
=====================================================================
FROM 'core.3946'
(gdb) bt
#0 0x00ad07a2 in _dl_sysinfo_int80 () from /lib/ld-linux.so.2
#1 0x00b11cc6 in kill () from /lib/tls/libc.so.6
#2 0xb56a509a in gtm_dump_core () at /usr/local/src/gtm/sr_unix/gtm_dump_core.c:55
#3 0xb56a5b0c in gtm_fork_n_core () at /usr/local/src/gtm/sr_unix/gtm_fork_n_core.c:161
#4 0xb5693a5e in ch_cond_core () at /usr/local/src/gtm/sr_unix/ch_cond_core.c:53
#5 0xb565a5d9 in rts_error (argcnt=5) at /usr/local/src/gtm/sr_unix/rts_error.c:75
#6 0xb568fbfb in add_inter (val=-1, addr=0xb53162e0, latch=0xb5316298)
at /usr/local/src/gtm/sr_unix/add_inter.c:68
#7 0xb575e94d in gds_rundown () at /usr/local/src/gtm/sr_unix/gds_rundown.c:209
#8 0xb56a9d5f in gv_rundown () at /usr/local/src/gtm/sr_port/gv_rundown.c:88
#9 0xb56a54e9 in gtm_exit_handler () at /usr/local/src/gtm/sr_unix/gtm_exit_handler.c:91
#10 0x00b145a7 in exit () from /lib/tls/libc.so.6
#11 0xb5665e0a in stop_image_no_core () at /usr/local/src/gtm/sr_unix/stop_image.c:70
#12 0xb56432f0 in mdb_condition_handler (arg=150374524)
at /usr/local/src/gtm/sr_port/mdb_condition_handler.c:395
#13 0xb565a63c in rts_error (argcnt=5) at /usr/local/src/gtm/sr_unix/rts_error.c:75
#14 0xb568fbfb in add_inter (val=-1, addr=0xb5316380, latch=0xb5316298)
at /usr/local/src/gtm/sr_unix/add_inter.c:68
#15 0xb5662e99 in secshr_db_clnup (secshr_state=COMMIT_INCOMPLETE)
at /usr/local/src/gtm/sr_port/secshr_db_clnup.c:1582
#16 0xb572b43e in t_commit_cleanup (status=cdb_sc_uperr, signal=150374524)
at /usr/local/src/gtm/sr_port/t_commit_cleanup.c:212
#17 0xb572a5a7 in t_ch (arg=150374524) at /usr/local/src/gtm/sr_port/t_ch.c:83
#18 0xb565a63c in rts_error (argcnt=5) at /usr/local/src/gtm/sr_unix/rts_error.c:75
#19 0xb568fbfb in add_inter (val=-1, addr=0xb5316360, latch=0xb5316298)
at /usr/local/src/gtm/sr_unix/add_inter.c:68
#20 0xb5686375 in wcs_wtstart (region=0xb5824cc8, writes=0)
at /usr/local/src/gtm/sr_unix/wcs_wtstart.c:392
#21 0xb5736c25 in wcs_stale (tid=-1249751864, hd_len=4, region=0x80dd370)
at /usr/local/src/gtm/sr_port/t_end_sysops.c:1755
#22 0xb56a3f5d in timer_handler (why=14) at /usr/local/src/gtm/sr_unix/gt_timers.c:565
#23 <signal handler called>
#24 0x00ad07a2 in _dl_sysinfo_int80 () from /lib/ld-linux.so.2
#25 0x00d3ef7c in pthread_cond_timedwait@@GLIBC_2.3.2 () from /lib/tls/libpthread.so.0
#26 0x00d3f3f5 in pthread_cond_timedwait@GLIBC_2.0 () from /lib/tls/libpthread.so.0
#27 0x0631017e in os::PlatformEvent::park ()
from /usr/java/jdk1.6.0_10/jre/lib/i386/client/libjvm.so
#28 0x062fcfa9 in Monitor::IWait ()
from /usr/java/jdk1.6.0_10/jre/lib/i386/client/libjvm.so
#29 0x062fd5c1 in Monitor::wait ()
from /usr/java/jdk1.6.0_10/jre/lib/i386/client/libjvm.so
#30 0x063d9f44 in VMThread::loop ()
from /usr/java/jdk1.6.0_10/jre/lib/i386/client/libjvm.so
#31 0x063d98cf in VMThread::run ()
---Type <return> to continue, or q <return> to quit---
from /usr/java/jdk1.6.0_10/jre/lib/i386/client/libjvm.so
#32 0x063108a9 in java_start () from /usr/java/jdk1.6.0_10/jre/lib/i386/client/libjvm.so
#33 0x00d3c3cc in start_thread () from /lib/tls/libpthread.so.0
#34 0x00bb596e in clone () from /lib/tls/libc.so.6
(gdb)
=====================================================================
FROM 'core.3947'
(gdb) bt
#0 0x00ad07a2 in _dl_sysinfo_int80 () from /lib/ld-linux.so.2
#1 0x00b11cc6 in kill () from /lib/tls/libc.so.6
#2 0xb56a509a in gtm_dump_core () at /usr/local/src/gtm/sr_unix/gtm_dump_core.c:55
#3 0xb56a5b0c in gtm_fork_n_core () at /usr/local/src/gtm/sr_unix/gtm_fork_n_core.c:161
#4 0xb5693a5e in ch_cond_core () at /usr/local/src/gtm/sr_unix/ch_cond_core.c:53
#5 0xb565a5d9 in rts_error (argcnt=5) at /usr/local/src/gtm/sr_unix/rts_error.c:75
#6 0xb568fbfb in add_inter (val=-1, addr=0xb53162e0, latch=0xb5316298)
at /usr/local/src/gtm/sr_unix/add_inter.c:68
#7 0xb5760263 in gds_rundown_ch (arg=150374524)
at /usr/local/src/gtm/sr_unix/gds_rundown.c:615
#8 0xb565a63c in rts_error (argcnt=5) at /usr/local/src/gtm/sr_unix/rts_error.c:75
#9 0xb568fbfb in add_inter (val=-1, addr=0xb53162e0, latch=0xb5316298)
at /usr/local/src/gtm/sr_unix/add_inter.c:68
#10 0xb575e94d in gds_rundown () at /usr/local/src/gtm/sr_unix/gds_rundown.c:209
#11 0xb56a9d5f in gv_rundown () at /usr/local/src/gtm/sr_port/gv_rundown.c:88
#12 0xb56a54e9 in gtm_exit_handler () at /usr/local/src/gtm/sr_unix/gtm_exit_handler.c:91
#13 0x00b145a7 in exit () from /lib/tls/libc.so.6
#14 0xb5665e0a in stop_image_no_core () at /usr/local/src/gtm/sr_unix/stop_image.c:70
#15 0xb56432f0 in mdb_condition_handler (arg=150374524)
at /usr/local/src/gtm/sr_port/mdb_condition_handler.c:395
#16 0xb565a63c in rts_error (argcnt=5) at /usr/local/src/gtm/sr_unix/rts_error.c:75
#17 0xb568fbfb in add_inter (val=-1, addr=0xb5316380, latch=0xb5316298)
at /usr/local/src/gtm/sr_unix/add_inter.c:68
#18 0xb5662e99 in secshr_db_clnup (secshr_state=COMMIT_INCOMPLETE)
at /usr/local/src/gtm/sr_port/secshr_db_clnup.c:1582
#19 0xb572b43e in t_commit_cleanup (status=cdb_sc_uperr, signal=150374524)
at /usr/local/src/gtm/sr_port/t_commit_cleanup.c:212
#20 0xb572a5a7 in t_ch (arg=150374524) at /usr/local/src/gtm/sr_port/t_ch.c:83
#21 0xb565a63c in rts_error (argcnt=5) at /usr/local/src/gtm/sr_unix/rts_error.c:75
#22 0xb568fbfb in add_inter (val=-1, addr=0xb5316360, latch=0xb5316298)
at /usr/local/src/gtm/sr_unix/add_inter.c:68
#23 0xb5686375 in wcs_wtstart (region=0xb5824cc8, writes=0)
at /usr/local/src/gtm/sr_unix/wcs_wtstart.c:392
#24 0xb5736c25 in wcs_stale (tid=-1249751864, hd_len=4, region=0x80dd370)
at /usr/local/src/gtm/sr_port/t_end_sysops.c:1755
#25 0xb56a3f5d in timer_handler (why=14) at /usr/local/src/gtm/sr_unix/gt_timers.c:565
#26 <signal handler called>
#27 0x00ad07a2 in _dl_sysinfo_int80 () from /lib/ld-linux.so.2
#28 0x00d3ef7c in pthread_cond_timedwait@@GLIBC_2.3.2 () from /lib/tls/libpthread.so.0
#29 0x00d3f3f5 in pthread_cond_timedwait@GLIBC_2.0 () from /lib/tls/libpthread.so.0
#30 0x0631017e in os::PlatformEvent::park ()
from /usr/java/jdk1.6.0_10/jre/lib/i386/client/libjvm.so
#31 0x062fcfa9 in Monitor::IWait ()
from /usr/java/jdk1.6.0_10/jre/lib/i386/client/libjvm.so
#32 0x062fd5c1 in Monitor::wait ()
from /usr/java/jdk1.6.0_10/jre/lib/i386/client/libjvm.so
#33 0x063d9f44 in VMThread::loop ()
from /usr/java/jdk1.6.0_10/jre/lib/i386/client/libjvm.so
#34 0x063d98cf in VMThread::run ()
from /usr/java/jdk1.6.0_10/jre/lib/i386/client/libjvm.so
#35 0x063108a9 in java_start () from /usr/java/jdk1.6.0_10/jre/lib/i386/client/libjvm.so
#36 0x00d3c3cc in start_thread () from /lib/tls/libpthread.so.0
#37 0x00bb596e in clone () from /lib/tls/libc.so.6
(gdb)
*** TADA!! ***
Found the solution for my problem.
Need to start the Java VM with the option
-XX:+AllowUserSignalHandlers
This option means not to complain if the application installs signal handlers. (Relevant to Solaris and Linux only.)
No it works perfectly!
Regards
Wonderful! Thank you for the update.
Regards
-- Bhaskar
Hello Bhaskar, sorry i'm a little late with my answer. Lot of work to do.
What i'm going to do is to implement a Object-Oriented storage mechanism on top of GT.M. So the main functionality will be implemented in Java itself. I will use M only as a gateway to the Database. So in the meantime i have developed a smal prototype that will do the stuff.
i.E
GTM gtm = GTM.getInstance();
Person p = new Person("Lothar");
gtm.store(p);
(NO configuration files or @annotations required) Takes every plain Java Object.
This will work for all primitive Java types, Collections and Arrays. Also References to User classes are also implemented as well.
The Query-Interface looks like:
ObjectSet<Person> persons = gtm.query(Person.class);
for (Person person : persons) {
System.out.println("Name=" + person.getName());
}
So the main idea is to have a very similiar API as db4o has.
The main advantage over db4o will be a mature, rock-solid and professional database engine with all the stuff customers need.
So i plan to spawn another Project here on sourceforge.
What do you think?
Kind regards
Lothar