Hello,
the 'Jdb::enter_jdb()' function in file 'jdb.cpp' contains the following code:
// check for int $3 user debugging interface if (foreach_cpu(&handle_user_request, true)) { close_debug_console(cpu); leave_trap_handler(cpu); return 0; }
I'm not sure why in this case the second argument of 'foreach_cpu()' is true. I understand that it causes the result to be true only if the 'handle_user_request()' function returned true for every currently running CPU. But I found that this can be a problem when using the '-jdb_cmd=JS' kernel argument: if only one CPU is currently running, the result of 'foreach_cpu()' is true, but when two CPUs are currently running, the 'handle_user_request()' function returns true only for one CPU, which makes the end result false and causes the kernel to stop with the JDB prompt shown. Can somebody please explain?
Christian
Hi,
On Tue Mar 12, 2013 at 00:19:58 +0100, Christian Prochaska wrote:
the 'Jdb::enter_jdb()' function in file 'jdb.cpp' contains the following code:
// check for int $3 user debugging interface if (foreach_cpu(&handle_user_request, true)) { close_debug_console(cpu); leave_trap_handler(cpu); return 0; }
I'm not sure why in this case the second argument of 'foreach_cpu()' is true. I understand that it causes the result to be true only if the 'handle_user_request()' function returned true for every currently running CPU. But I found that this can be a problem when using the '-jdb_cmd=JS' kernel argument: if only one CPU is currently running, the result of 'foreach_cpu()' is true, but when two CPUs are currently running, the 'handle_user_request()' function returns true only for one CPU, which makes the end result false and causes the kernel to stop with the JDB prompt shown. Can somebody please explain?
I think your observation is correct concerning the behaviour of foreach_cpu. Are you seeing this on x86? I would like to see the same on my setup.
Adam
On 18.03.2013 23:23, Adam Lackorzynski wrote:
Hi,
On Tue Mar 12, 2013 at 00:19:58 +0100, Christian Prochaska wrote:
the 'Jdb::enter_jdb()' function in file 'jdb.cpp' contains the following code:
// check for int $3 user debugging interface if (foreach_cpu(&handle_user_request, true)) { close_debug_console(cpu); leave_trap_handler(cpu); return 0; }
I'm not sure why in this case the second argument of 'foreach_cpu()' is true. I understand that it causes the result to be true only if the 'handle_user_request()' function returned true for every currently running CPU. But I found that this can be a problem when using the '-jdb_cmd=JS' kernel argument: if only one CPU is currently running, the result of 'foreach_cpu()' is true, but when two CPUs are currently running, the 'handle_user_request()' function returns true only for one CPU, which makes the end result false and causes the kernel to stop with the JDB prompt shown. Can somebody please explain?
I think your observation is correct concerning the behaviour of foreach_cpu. Are you seeing this on x86? I would like to see the same on my setup.
Yes, on x86. I'm running 'qemu-system-i386' with the '-smp 2' option and it happens only some of the times. The kernel output is attached.
Christian
On Tue Mar 19, 2013 at 23:59:22 +0100, Christian Prochaska wrote:
On 18.03.2013 23:23, Adam Lackorzynski wrote:
Hi,
On Tue Mar 12, 2013 at 00:19:58 +0100, Christian Prochaska wrote:
the 'Jdb::enter_jdb()' function in file 'jdb.cpp' contains the following code:
// check for int $3 user debugging interface if (foreach_cpu(&handle_user_request, true)) { close_debug_console(cpu); leave_trap_handler(cpu); return 0; }
I'm not sure why in this case the second argument of 'foreach_cpu()' is true. I understand that it causes the result to be true only if the 'handle_user_request()' function returned true for every currently running CPU. But I found that this can be a problem when using the '-jdb_cmd=JS' kernel argument: if only one CPU is currently running, the result of 'foreach_cpu()' is true, but when two CPUs are currently running, the 'handle_user_request()' function returns true only for one CPU, which makes the end result false and causes the kernel to stop with the JDB prompt shown. Can somebody please explain?
I think your observation is correct concerning the behaviour of foreach_cpu. Are you seeing this on x86? I would like to see the same on my setup.
Yes, on x86. I'm running 'qemu-system-i386' with the '-smp 2' option and it happens only some of the times. The kernel output is attached.
Ah, thanks for the output and hint, I'll investigate.
Adam
On Tue Mar 19, 2013 at 23:59:22 +0100, Christian Prochaska wrote:
Yes, on x86. I'm running 'qemu-system-i386' with the '-smp 2' option and it happens only some of the times. The kernel output is attached.
Should hopefully be fixed now.
Adam
l4-hackers@os.inf.tu-dresden.de