Hi,
Today I tried to upgrade to version 2.6.1 and started with slurmdbd.
The new one seems to have great problems with MySLQ (version 14.14).
Command
/usr/sbin/slurmdbd -D -vvvvvv
says:
slurmdbd: debug3: Trying to load plugin /usr/lib64/slurm/auth_munge.so
slurmdbd: auth plugin for Munge (http://code.google.com/p/munge/) loaded
slurmdbd: debug3: Success.
slurmdbd: debug3: Trying to load plugin
/usr/lib64/slurm/accounting_storage_mysql.so
slurmdbd: debug2: mysql_connect() called for db slurm_acct_db
slurmdbd: debug4: (accounting_storage_mysql.c:1059) query
show tables like 'user_table';
slurmdbd: debug4: (accounting_storage_mysql.c:1079) query
show tables like 'haddock_assoc_table';
slurmdbd: debug4: (accounting_storage_mysql.c:1096) query
show columns from "haddock_assoc_table" where Field='is_def';
Segmentation fault (core dumped)
Please note that my version of MySQL does not like the "show
columns" command, and that this might possible be the source
of the problems:
mysql> show columns from "haddock_assoc_table" where Field='is_def';
ERROR 1064 (42000): You have an error in your SQL syntax; check the
manual that corresponds to your MySQL server version for the right
syntax to use near '"haddock_assoc_table" where Field='is_def'' at
line 1
mysql> show columns from haddock_assoc_table where Field='is_def';
+--------+------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+--------+------------+------+-----+---------+-------+
| is_def | tinyint(4) | NO | | 0 | |
+--------+------------+------+-----+---------+-------+
1 row in set (0.00 sec)
It might be a bad idea to put citation marks (") around
table names, at least for the RHEL version of MySQL...
Command
"gdb/usr/sbin/slurmdbd"
gives
(gdb) run
Starting program: /usr/sbin/slurmdbd
[Thread debugging using libthread_db enabled]
[New Thread 0x2aaaae37f700 (LWP 5221)]
[Thread 0x2aaaae37f700 (LWP 5221) exited]
Program received signal SIGSEGV, Segmentation fault.
0x00000000004cb3c9 in slurm_diff_tv_str (tv1=0x7fffffffcb80,
tv2=0x7fffffffcb70, tv_str=0x7fffffffcbd0 "9Z\215\253\252*",
len_tv_str=20,
from=0x76a018 "make table current \"haddock_assoc_table\"",
limit=0, delta_t=0x0) at timers.c:59
59 (*delta_t) = (tv2->tv_sec - tv1->tv_sec) * 1000000;
Missing separate debuginfos, use: debuginfo-install
slurm-slurmdbd-2.6.1-1.el6.x86_64
(gdb) bt
#0 0x00000000004cb3c9 in slurm_diff_tv_str (tv1=0x7fffffffcb80,
tv2=0x7fffffffcb70, tv_str=0x7fffffffcbd0 "9Z\215\253\252*",
len_tv_str=20,
from=0x76a018 "make table current \"haddock_assoc_table\"",
limit=0, delta_t=0x0) at timers.c:59
#1 0x00002aaaab8cdbf1 in _mysql_make_table_current
(mysql_conn=0x74da08, table_name=0x7fffffffd730
"\"haddock_assoc_table\"", fields=<value optimized out>,
ending=0x2aaaab8d1c50 ", primary key (id_assoc), unique index
(user(20), acct(20), partition(20)))") at mysql_common.c:397
#2 mysql_db_create_table (mysql_conn=0x74da08,
table_name=0x7fffffffd730 "\"haddock_assoc_table\"", fields=<value
optimized out>,
ending=0x2aaaab8d1c50 ", primary key (id_assoc), unique index
(user(20), acct(20), partition(20)))") at mysql_common.c:797
#3 0x00002aaaab8a0a7e in create_cluster_tables (mysql_conn=0x74da08,
cluster_name=0x769f78 "haddock") at accounting_storage_mysql.c:1107
#4 0x00002aaaab8a1534 in _as_mysql_acct_check_tables
(mysql_conn=0x74da08) at accounting_storage_mysql.c:650
#5 0x00002aaaab8a1af0 in init () at accounting_storage_mysql.c:2104
#6 0x0000000000452460 in plugin_load_from_file (p=0x7fffffffde48,
fq_path=0x73ed28 "/usr/lib64/slurm/accounting_storage_mysql.so") at
plugin.c:202
#7 0x0000000000452732 in plugin_load_and_link (type_name=<value
optimized out>, n_syms=56, names=0x735a20, ptrs=0x73a700) at
plugin.c:258
#8 0x00000000004528c1 in plugin_context_create (plugin_type=0x501aa0
"accounting_storage", uler_type=<value optimized out>, ptrs=0x73a700,
names=0x735a20,
names_size=448) at plugin.c:397
#9 0x00000000004b17ea in slurm_acct_storage_init (loc=0x0) at
slurm_accounting_storage.c:284
#10 0x000000000042d01e in main (argc=1, argv=<value optimized out>)
at slurmdbd.c:129
(gdb) list 43,75
43 /*
44 * slurm_diff_tv_str - build a string showing the time
difference between two
45 * times
46 * IN tv1 - start of event
47 * IN tv2 - end of event
48 * OUT tv_str - place to put delta time in format "usec=%ld"
49 * IN len_tv_str - size of tv_str in bytes
50 * IN from - where the function was called form
51 */
52 extern void slurm_diff_tv_str(struct timeval *tv1, struct
timeval *tv2,
53 char *tv_str, int len_tv_str,
char *from,
54 long limit, long *delta_t)
55 {
56 char p[64] = "";
57 struct tm tm;
58
59 (*delta_t) = (tv2->tv_sec - tv1->tv_sec) * 1000000;
60 (*delta_t) += tv2->tv_usec - tv1->tv_usec;
61 snprintf(tv_str, len_tv_str, "usec=%ld", *delta_t);
62 if (from) {
63 if (!limit)
64 limit = 1000000;
65 if (*delta_t > limit) {
66 if (!localtime_r(&tv2->tv_sec, &tm))
67 fprintf(stderr,
"localtime_r() failed\n");
68 if (strftime(p, sizeof(p), "%T", &tm)
== 0)
69 fprintf(stderr, "strftime()
returned 0\n");
70 verbose("Warning: Note very large
processing "
71 "time from %s: %s
began=%s.%3.3d",
72 from, tv_str, p,
(int)(tv2->tv_usec / 1000));
73 }
74 }
75 }
(gdb) print *tv1
$6 = {tv_sec = 1378285293, tv_usec = 399161}
(gdb) print *tv2
$7 = {tv_sec = 1378285293, tv_usec = 399475}
(gdb) print len_tv_str
$8 = 20
(gdb) print from
$10 = 0x76a018 "make table current \"haddock_assoc_table\""
(gdb) print limit
$11 = 0
(gdb) print delta_t
$21 = (long int *) 0x0
(gdb) print *delta_t
Cannot access memory at address 0x0
Cheers,
-- Lennart Karlsson
UPPMAX, Uppsala University, Sweden
http://www.uppmax.uu.se