From PR 17612: #include <stdlib.h> struct big { char foo[1 * 1024 * 1024 * 1024]; }; int main () { struct big *p = malloc (sizeof (*p)); return 0; } Printing *p takes forever. Plus it's not interruptable. This bug covers the "not interruptable" part.
I think what's taking awhile and is uninterruptable is computing repeated elements. The computation proceeds passed "print elements". E.g., change foo to 1M bytes and it still takes awhile, but it completes without taking "forever". (gdb) set debug target 1 (gdb) p *p target_thread_address_space (process 12972) = 1 native:target_xfer_partial (2, (null), 0x2dd1610, 0x0, 0x401ba8, 8) = 1, 8, bytes = 10 10 60 f7 ff 7f 00 00 native:target_xfer_partial (2, (null), 0x7f63eadcc010, 0x0, 0x7ffff7601010, 1048576) = 1, 1048576, bytes = 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ... $1 = { [long uninterruptible pause here] foo = '\000' <repeats 1048575 times> } (gdb) Then if I change foo to contain random text (but leave it still 1GB in size) up to "print elements" (default = 200) then it completes reasonably quickly.