Am 27.11.2011 16:40, schrieb Rich Coe:
On Sat, 26 Nov 2011 15:04:43 -0600 Rich Coe
wrote: On Sat, 26 Nov 2011 18:55:43 +0100 Christoph Bartoschek
wrote: I think I see the issue. The format string passed in has %% specifier, which is supposed to print a literal % instead of being a format specifier. In this case, the code does not recognize the '%%' construct, and fails.
I think it should be easy to construct a test case that shows this.
I was wrong. Here's a test case showing that it's working.
It looks like one of the registered printf extension handlers in your problem is being called because there's a specifier for %s (not sure)? The info handler is specifying that there is 2 or more args expected and the info handler is calling through to a null pointer.
Which is really weird, because the info handler has already been called once in order to get to this point.
I'll have to think if there's a way to avoid or debug and fix this problem. One possibility is to override the register_printf_function so that it doesn't cause an issue in the calling program.
I've set a breakpoint on register_printf_function. There is no call to it. The tables you mentioned in an earlier post seem to be empty: (gdb) p __printf_function_table[0] $4 = (printf_function *) 0 (gdb) p __printf_modifier_table[0] $5 = (struct printf_modifier_record *) 0x0 (gdb) p __printf_va_arg_table[0] $6 = (printf_va_arg_function *) 0x7fffcf1ab0b0 Is there anything else I could try? Besides recompiling glibc and the program I use I think I could add debug statements in any code. Maybe I could also recompile glibc if this can be easily done from the srpm. Christoph -- To unsubscribe, e-mail: opensuse+unsubscribe@opensuse.org To contact the owner, e-mail: opensuse+owner@opensuse.org