David Zhang wrote: > > Are you sure? I don't find that redefinition. Besides > > print_aligned_text() also calls putc and puts. > Yes, below is the gdb debug message when psql first time detects the > error "No space left on device". Test case, "postgres=# select > repeat('111', 1000000) \g /mnt/ramdisk/file" > bt > #0 flushbuffer (target=0x7ffd6a709ad0) at snprintf.c:313
Indeed. For some reason gdb won't let me step into these fprintf() calls, but you're right they're redefined (through include/port.h): #define vsnprintf pg_vsnprintf #define snprintf pg_snprintf #define vsprintf pg_vsprintf #define sprintf pg_sprintf #define vfprintf pg_vfprintf #define fprintf pg_fprintf #define vprintf pg_vprintf #define printf(...) pg_printf(__VA_ARGS__) Anyway, I don't see it leading to an actionable way to reliably keep errno, as discussed upthread. Best regards, -- Daniel Vérité PostgreSQL-powered mailer: http://www.manitou-mail.org Twitter: @DanielVerite