Re: [GENERAL] Segmentation fault while COPY in 7.3
От | Tom Lane |
---|---|
Тема | Re: [GENERAL] Segmentation fault while COPY in 7.3 |
Дата | |
Msg-id | 25344.1038764286@sss.pgh.pa.us обсуждение исходный текст |
Ответ на | Re: [GENERAL] Segmentation fault while COPY in 7.3 ("Nicolai Tufar" <ntufar@apb.com.tr>) |
Список | pgsql-hackers |
"Nicolai Tufar" <ntufar@apb.com.tr> writes: > From: "Tom Lane" <tgl@sss.pgh.pa.us> >> Ohhh ... >> >> Nicolai, are you running with a client encoding different from server >> encoding? > Got it! Okay, the problem is a double free of memory in COPY OUT. I've applied the following patch for 7.3.1. (A better fix would be for COPY OUT to run in a local memory context that it could reset every so often, like once per row, and then we could remove these risky retail pfree's entirely. I plan to do that instead in development sources.) regards, tom lane *** src/backend/commands/copy.c.orig Fri Oct 18 20:25:36 2002 --- src/backend/commands/copy.c Sun Dec 1 12:28:24 2002 *************** *** 1470,1478 **** char *string; char c; char delimc = delim[0]; - bool same_encoding; ! char *string_start; int mblen; int i; --- 1470,1477 ---- char *string; char c; char delimc = delim[0]; bool same_encoding; ! char *string_start = NULL; int mblen; int i; *************** *** 1481,1492 **** { string = (char *) pg_server_to_client((unsigned char *) server_string, strlen(server_string)); ! string_start = string; } else { string = server_string; - string_start = NULL; } for (; (c = *string) != '\0'; string += mblen) --- 1480,1491 ---- { string = (char *) pg_server_to_client((unsigned char *) server_string, strlen(server_string)); ! if (string != server_string) ! string_start = string; } else { string = server_string; } for (; (c = *string) != '\0'; string += mblen)
В списке pgsql-hackers по дате отправления: