summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorbehlendo <behlendo@7e1ea52c-4ff2-0310-8f11-9dd32ca42a1c>2008-04-21 18:08:33 +0000
committerbehlendo <behlendo@7e1ea52c-4ff2-0310-8f11-9dd32ca42a1c>2008-04-21 18:08:33 +0000
commit892d51061e041e48e36267d33bdb3bb575c6768e (patch)
tree14220f060d78ba3d898d2601d8af87d2c8122905
parent937879f11db15a4842306f9da4b4a3e60cf073b7 (diff)
Handful of minor stack checking fixes
git-svn-id: https://outreach.scidac.gov/svn/spl/trunk@79 7e1ea52c-4ff2-0310-8f11-9dd32ca42a1c
-rw-r--r--cmd/spl.c4
-rw-r--r--include/sys/debug.h6
-rw-r--r--modules/spl/spl-debug.c7
3 files changed, 9 insertions, 8 deletions
diff --git a/cmd/spl.c b/cmd/spl.c
index 866bc8905..ad2c81b4a 100644
--- a/cmd/spl.c
+++ b/cmd/spl.c
@@ -48,10 +48,10 @@ print_rec(struct dbg_line **linev, int used, FILE *out)
struct dbg_line *line = linev[i];
struct spl_debug_header *hdr = line->hdr;
- fprintf(out, "%08x:%08x:%u:%u.%06llu:%u:%u:(%s:%u:%s()) %s",
+ fprintf(out, "%08x:%08x:%u:%u.%06llu:%u:%u:%u:(%s:%u:%s()) %s",
hdr->ph_subsys, hdr->ph_mask, hdr->ph_cpu_id,
hdr->ph_sec, (unsigned long long)hdr->ph_usec,
- hdr->ph_stack, hdr->ph_pid, line->file,
+ hdr->ph_stack, hdr->ph_pid, hdr->ph_stack, line->file,
hdr->ph_line_num, line->fn, line->text);
free(line->hdr);
free(line);
diff --git a/include/sys/debug.h b/include/sys/debug.h
index 12585e00f..720e4136e 100644
--- a/include/sys/debug.h
+++ b/include/sys/debug.h
@@ -172,6 +172,8 @@ do { \
"exceeded 90%% of maximum safe " \
"stack size (%lu/%lu)\n", \
_stack, THREAD_SIZE); \
+ spl_debug_dumpstack(NULL); \
+ spl_debug_dumplog(); \
} else { \
spl_debug_msg(NULL, D_TRACE, D_WARNING, \
file, func, line, "Error " \
@@ -183,13 +185,11 @@ do { \
} \
} while (0)
-#define CHECK_STACK()__CHECK_STACK(__FILE__, __func__, __LINE__)
+#define CHECK_STACK() __CHECK_STACK(__FILE__, __func__, __LINE__)
/* ASSERTION that is safe to use within the debug system */
#define __ASSERT(cond) \
do { \
- CHECK_STACK(); \
- \
if (unlikely(!(cond))) { \
printk(KERN_ERR "ASSERTION("#cond") failed"); \
SBUG(); \
diff --git a/modules/spl/spl-debug.c b/modules/spl/spl-debug.c
index e4344fdd5..b5771a2aa 100644
--- a/modules/spl/spl-debug.c
+++ b/modules/spl/spl-debug.c
@@ -504,8 +504,9 @@ trace_print_to_console(struct spl_debug_header *hdr, int mask, const char *buf,
if ((mask & D_CONSOLE) != 0) {
printk("%s%s: %.*s", ptype, prefix, len, buf);
} else {
- printk("%s%s: %d:(%s:%d:%s()) %.*s", ptype, prefix, hdr->ph_pid,
- file, hdr->ph_line_num, fn, len, buf);
+ printk("%s%s: %d:%d:(%s:%d:%s()) %.*s", ptype, prefix,
+ hdr->ph_pid, hdr->ph_stack, file,
+ hdr->ph_line_num, fn, len, buf);
}
return;
@@ -1096,7 +1097,7 @@ void spl_debug_dumpstack(struct task_struct *tsk)
if (tsk == NULL)
tsk = current;
- CWARN("showing stack for process %d\n", tsk->pid);
+ printk(KERN_ERR "SPL: Showing stack for process %d\n", tsk->pid);
show_task(tsk);
}
EXPORT_SYMBOL(spl_debug_dumpstack);