Description:
Performing a simple scan read causes a segmentation fault.
This code crashes on Ubuntu 8.04 but works on OS X 10.5.
NDB: mysql-5.1.27 ndb-6.3.17
OS: Ubuntu 8.04, 2.6.24-19-generic #1 SMP Wed Aug 20 22:56:21 UTC 2008 i686 GNU/Linux
Java: "1.6.0_06"
Java(TM) SE Runtime Environment (build 1.6.0_06-b02)
Java HotSpot(TM) Client VM (build 10.0-b22, mixed mode, sharing)
--
NdbScanOperation operation = transaction.getSelectScanOperation(NDBJUtil.SIMPLE_TABLE_NAME,
NdbScanFilter scanFilter = operation.getNdbScanFilter();
scanFilter.begin(NdbScanFilter.Group.AND);
scanFilter.gt("id", 25);
scanFilter.le("id", 75);
scanFilter.end();
operation.getValue("id");
operation.getValue("firstname");
operation.getValue("lastname");
transaction.execute(ExecType.Commit, AbortOption.AbortOnError, true);
NdbResultSet rs = operation.resultData();
while (rs.next()) {
int id = rs.getInt("id");
String firstName = rs.getString("firstname");
String lastName = rs.getString("lastname");
System.out.println("ID:" + id + ", FIRSTNAME: " + firstName + ", LASTNAME: " + lastName);
}
--
...
*** glibc detected *** java: free(): invalid next size (fast): 0x082e9fc8 ***
======= Backtrace: =========
/lib/tls/i686/cmov/libc.so.6[0xb7dfba85]
/lib/tls/i686/cmov/libc.so.6(cfree+0x90)[0xb7dff4f0]
/home/alyu/Projects/ext/ndbj/lib/libndbj.so.0.0.0(Java_com_mysql_cluster_ndbj_ndbjJNI_NdbRecAttrImpl_1getString+0xc8)[0xb564d12a]
[0xb5c95e9d]
[0xb5c8ed77]
[0xb5c8f253]
[0xb5c8f253]
[0xb5c8eedd]
[0xb5c8eedd]
[0xb5c8c249]
/usr/lib/jvm/java-6-sun-1.6.0.06/jre/lib/i386/client/libjvm.so[0x621c5cd]
/usr/lib/jvm/java-6-sun-1.6.0.06/jre/lib/i386/client/libjvm.so[0x6310748]
/usr/lib/jvm/java-6-sun-1.6.0.06/jre/lib/i386/client/libjvm.so[0x621c460]
/usr/lib/jvm/java-6-sun-1.6.0.06/jre/lib/i386/client/libjvm.so[0x6245a86]
/usr/lib/jvm/java-6-sun-1.6.0.06/jre/lib/i386/client/libjvm.so[0x6237288]
java(JavaMain+0x2c8)[0x8049b98]
/lib/tls/i686/cmov/libpthread.so.0[0xb7ef24fb]
/lib/tls/i686/cmov/libc.so.6(clone+0x5e)[0xb7e66e5e]
======= Memory map: ========
06000000-0641b000 r-xp 00000000 08:01 469735
/usr/lib/jvm/java-6-sun-1.6.0.06/jre/lib/i386/client/libjvm.so
0641b000-06435000 rwxp 0041a000 08:01 469735
/usr/lib/jvm/java-6-sun-1.6.0.06/jre/lib/i386/client/libjvm.so
06435000-06855000 rwxp 06435000 00:00 0
08048000-08052000 r-xp 00000000 08:01 444754 /usr/lib/jvm/java-6-sun-1.6.0.06/jre/bin/java
08052000-08053000 rwxp 00009000 08:01 444754 /usr/lib/jvm/java-6-sun-1.6.0.06/jre/bin/java
08053000-08350000 rwxp 08053000 00:00 0 [heap]
8bff0000-8c0f0000 rwxp 8bff0000 00:00 0
8c0f0000-8c4d0000 rwxp 8c0f0000 00:00 0
8c4d0000-8c8d0000 rwxp 8c4d0000 00:00 0
8c8d0000-8fff0000 rwxp 8c8d0000 00:00 0
8fff0000-90bf0000 rwxp 8fff0000 00:00 0
90bf0000-93ff0000 rwxp 90bf0000 00:00 0
93ff0000-945d4000 r-xs 00001000 08:01 469770
/usr/lib/jvm/java-6-sun-1.6.0.06/jre/lib/i386/client/classes.jsa
945d4000-947f0000 rwxp 945d4000 00:00 0
947f0000-94ee9000 rwxp 005e5000 08:01 469770
/usr/lib/jvm/java-6-sun-1.6.0.06/jre/lib/i386/client/classes.jsa
94ee9000-953f0000 rwxp 94ee9000 00:00 0
953f0000-954c9000 rwxp 00cde000 08:01 469770
/usr/lib/jvm/java-6-sun-1.6.0.06/jre/lib/i386/client/classes.jsa
954c9000-957f0000 rwxp 954c9000 00:00 0
957f0000-957f4000 r-xs 00db7000 08:01 469770
/usr/lib/jvm/java-6-sun-1.6.0.06/jre/lib/i386/client/classes.jsa
957f4000-95bf0000 rwxp 957f4000 00:00 0
b49c4000-b49c5000 ---p b49c4000 00:00 0
b49c5000-b49cc000 rwxp b49c5000 00:00 0
b49cc000-b49cd000 ---p b49cc000 00:00 0
b49cd000-b49d4000 rwxp b49cd000 00:00 0
b49d4000-b49d5000 ---p b49d4000 00:00 0
b49d5000-b49dc000 rwxp b49d5000 00:00 0
b49dc000-b49dd000 ---p b49dc000 00:00 0
b49dd000-b49e4000 rwxp b49dd000 00:00 0
b49e4000-b49e5000 ---p b49e4000 00:00 0
b49e5000-b4a6e000 rwxp b49e5000 00:00 0
b4a6e000-b4a6f000 ---p b4a6e000 00:00 0
b4a6f000-b526f000 rwxp b4a6f000 00:00 0
b526f000-b5279000 r-xp 00000000 08:01 524352 /lib/libgcc_s.so.1
b5279000-b527a000 rwxp 0000a000 08:01 524352 /lib/libgcc_s.so.1
b527a000-b5362000 r-xp 00000000 08:01 231764 /usr/lib/libstdc++.so.6.0.9
b5362000-b5365000 r-xp 000e8000 08:01 231764 /usr/lib/libstdc++.so.6.0.9
b5365000-b5367000 rwxp 000eb000 08:01 231764 /usr/lib/libstdc++.so.6.0.9
b5367000-b536d000 rwxp b5367000 00:00 0
b536d000-b54bb000 r-xp 00000000 08:01 1237026
/home/alyu/Projects/db/mysql-cluster-gpl-6.3.17-linux-i686-glibc23/lib/libndbclient.so.4.0.0
b54bb000-b55dd000 rwxp 0014e000 08:01 1237026
/home/alyu/Projects/db/mysql-cluster-gpl-6.3.17-linux-i686-glibc23/lib/libndbclient.so.4.0.0
b55dd000-b55e0000 rwxp b55dd000 00:00 0
b55e0000-b55e9000 r-xp 00000000 08:01 541669 /lib/tls/i686/cmov/libcrypt-2.7.so
b55e9000-b55eb000 rwxp 00008000 08:01 541669 /lib/tls/i686/cmov/libcrypt-2.7.so
b55eb000-b5612000 rwxp b55eb000 00:00 0
b561e000-b568d000 r-xp 00000000 08:01 106524 /home/alyu/Projects/ext/ndbj/lib/libndbj.so.0.0.0
b568d000-b568f000 rwxp 0006e000 08:01 106524 /home/alyu/Projects/ext/ndbj/lib/libndbj.so.0.0.0
b568f000-b5693000 r-xs 000ca000 08:01 444487
/usr/lib/jvm/java-6-sun-1.6.0.06/jre/lib/ext/localedata.jar
...
How to repeat:
NdbScanOperation operation = transaction.getSelectScanOperation(NDBJUtil.SIMPLE_TABLE_NAME,
NdbScanFilter scanFilter = operation.getNdbScanFilter();
scanFilter.begin(NdbScanFilter.Group.AND);
scanFilter.gt("id", 25);
scanFilter.le("id", 75);
scanFilter.end();
operation.getValue("id");
operation.getValue("firstname");
operation.getValue("lastname");
transaction.execute(ExecType.Commit, AbortOption.AbortOnError, true);
NdbResultSet rs = operation.resultData();
while (rs.next()) {
int id = rs.getInt("id");
String firstName = rs.getString("firstname");
String lastName = rs.getString("lastname");
System.out.println("ID:" + id + ", FIRSTNAME: " + firstName + ", LASTNAME: " + lastName);
}