Обсуждение: Re: [JDBC] server process (PID 1188) exited with exit code -1073741819, 8.2 beta1
Re: [JDBC] server process (PID 1188) exited with exit code -1073741819, 8.2 beta1
От
Dave Cramer
Дата:
This is a server bug, I will post to hackers for you, it has little
to do with JDBC, however the ? can't be a column in a prepared statement
DAVE
On 24-Oct-06, at 4:45 PM, JEAN-PIERRE PELLETIER wrote:
> Hi,
>
> I have a query that throws "org.postgresql.util.PSQLException: An I/
> O error occured while sending to the backend". Here is a simplified
> version of it where I used pg_database, but any table or view do
> the same.
>
> PreparedStatement pstmt = connection.prepareStatement("select ?
> from (select * from pg_database) t");
> pstmt.setObject(1, 1);
> ResultSet rs = pstmt.executeQuery();
>
> It restarts PostgreSQL with this in the Log
> 2006-10-24 15:35:38 LOG: server process (PID 1188) exited with
> exit code -1073741819
> 2006-10-24 15:35:38 LOG: terminating any other active server
> processes
> 2006-10-24 15:35:38 LOG: all server processes terminated;
> reinitializing
> 2006-10-24 15:35:39 LOG: database system was interrupted at
> 2006-10-24 15:34:54 Eastern Standard Time
> 2006-10-24 15:35:39 LOG: Windows fopen("recovery.conf","r")
> failed: code 2, errno 2
> 2006-10-24 15:35:39 LOG: Windows fopen("pg_xlog/
> 00000001.history","r") failed: code 2, errno 2
> 2006-10-24 15:35:39 LOG: Windows fopen("backup_label","r") failed:
> code 2, errno 2
> 2006-10-24 15:35:39 LOG: checkpoint record is at 0/31FDF0A0
> 2006-10-24 15:35:39 LOG: redo record is at 0/31FDF0A0; undo record
> is at 0/0; shutdown TRUE
> 2006-10-24 15:35:39 LOG: next transaction ID: 0/22535; next OID:
> 101011
> 2006-10-24 15:35:39 LOG: next MultiXactId: 1; next MultiXactOffset: 0
> 2006-10-24 15:35:39 LOG: database system was not properly shut
> down; automatic recovery in progress
> 2006-10-24 15:35:39 LOG: record with zero length at 0/31FDF0F0
> 2006-10-24 15:35:39 LOG: redo is not required
> 2006-10-24 15:35:40 LOG: database system is ready
> 2006-10-24 15:35:40 LOG: Windows fopen("global/pg_fsm.cache","rb")
> failed: code 2, errno 2
> 2006-10-24 15:35:40 LOG: transaction ID wrap limit is 2147484172,
> limited by database "postgres"
> 2006-10-24 15:36:40 LOG: Windows fopen("global/pgstat.stat","rb")
> failed: code 2, errno 2
> 2006-10-24 15:36:40 LOG: Windows fopen("global/pgstat.stat","rb")
> failed: code 2, errno 2
>
> I am using PostgreSQL 8.2 beta1 on Windows XP, Service Pack 2
> Both JDBC3 driver 8.1 build 407 and 8.2 build 503 do the same.
>
> Thanks,
> Jean-Pierre Pelletier
> e-djuster
>
>
>
> ---------------------------(end of
> broadcast)---------------------------
> TIP 6: explain analyze is your friend
>
Dave Cramer <pg@fastcrypt.com> writes:
> This is a server bug, I will post to hackers for you,
Please provide a complete test case. I tried to reproduce the failure
in libpq, with
/* Here is our out-of-line parameter value */
paramValues[0] = "joe's place";
res = PQexecParams(conn,
"SELECT $1 FROM (select * from pg_database) t",
1, /* one param */
NULL, /* let the backend deduce param type */
paramValues,
NULL, /* don't need param lengths since text */
NULL, /* default to all text params */
0); /* ask for text results */
and got nothing worse than
SELECT failed: ERROR: could not determine data type of parameter $1
regards, tom lane
Tom Lane wrote: > NULL, /* let the backend deduce param type */ I think the JDBC driver will be passing the int4 OID for the param type in this case. Best thing is probably for the OP to run with loglevel=2 and see exactly what's being sent, though. -O
Here is what I get with loglevel=2
08:47:18.718 (1) PostgreSQL 8.2devel JDBC3 with SSL (build 503)
08:47:18.718 (1) Trying to establish a protocol version 3 connection to
localhost:5432
08:47:18.859 (1) FE=> StartupPacket(user=postgres, database=main,
client_encoding=UNICODE, DateStyle=ISO)
08:47:19.218 (1) <=BE AuthenticationOk
08:47:19.234 (1) <=BE ParameterStatus(client_encoding = UNICODE)
08:47:19.234 (1) <=BE ParameterStatus(DateStyle = ISO, MDY)
08:47:19.234 (1) <=BE ParameterStatus(integer_datetimes = off)
08:47:19.234 (1) <=BE ParameterStatus(is_superuser = on)
08:47:19.234 (1) <=BE ParameterStatus(server_encoding = LATIN1)
08:47:19.234 (1) <=BE ParameterStatus(server_version = 8.2beta1)
08:47:19.234 (1) <=BE ParameterStatus(session_authorization = postgres)
08:47:19.234 (1) <=BE ParameterStatus(standard_conforming_strings = off)
08:47:19.234 (1) <=BE ParameterStatus(TimeZone = US/Eastern)
08:47:19.234 (1) <=BE BackendKeyData(pid=3248,ckey=166035706)
08:47:19.234 (1) <=BE ReadyForQuery(I)
08:47:19.234 (1) compatible = 8.2
08:47:19.234 (1) loglevel = 2
08:47:19.234 (1) prepare threshold = 5
getConnection returning
driver[className=org.postgresql.Driver,org.postgresql.Driver@747fa2]
08:47:19.296 (1) simple execute,
handler=org.postgresql.jdbc2.AbstractJdbc2Statement$StatementResultHandler@18352d8,
maxRows=0, fetchSize=0, flags=17
08:47:19.296 (1) FE=> Parse(stmt=null,query="select $1 from (select * from
pg_database) t",oids={23})
08:47:19.296 (1) FE=> Bind(stmt=null,portal=null,$1=<1>)
08:47:19.296 (1) FE=> Describe(portal=null)
08:47:19.296 (1) FE=> Execute(portal=null,limit=0)
08:47:19.296 (1) FE=> Sync
08:47:19.718 (1) FE=> Terminate
08:47:19.718 (1) Discarding IOException on close:
java.net.SocketException: Connection reset by peer: socket write errorat
java.net.SocketOutputStream.socketWrite0(NativeMethod)at java.net.SocketOutputStream.socketWrite(Unknown Source)at
java.net.SocketOutputStream.write(UnknownSource)at java.io.BufferedOutputStream.flushBuffer(Unknown Source)at
java.io.BufferedOutputStream.flush(UnknownSource)at org.postgresql.core.PGStream.flush(PGStream.java:532)at
org.postgresql.core.v3.ProtocolConnectionImpl.close(ProtocolConnectionImpl.java:131)at
org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:215)at
org.postgresql.jdbc2.AbstractJdbc2Statement.execute(AbstractJdbc2Statement.java:452)at
org.postgresql.jdbc2.AbstractJdbc2Statement.executeWithFlags(AbstractJdbc2Statement.java:354)at
org.postgresql.jdbc2.AbstractJdbc2Statement.executeQuery(AbstractJdbc2Statement.java:258)at
org.apache.jsp.Test_jsp._jspService(Test_jsp.java:104)at
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97)at
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)at
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:332)at
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314)at
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264)at
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)at
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)at
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)at
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)at
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)at
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)at
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)at
org.apache.coyote.http11.Http11AprProcessor.process(Http11AprProcessor.java:831)at
org.apache.coyote.http11.Http11AprProtocol$Http11ConnectionHandler.process(Http11AprProtocol.java:639)at
org.apache.tomcat.util.net.AprEndpoint$Worker.run(AprEndpoint.java:1196)atjava.lang.Thread.run(Unknown Source)
org.postgresql.util.PSQLException: An I/O error occured while sending to the
backend.at
org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:216)at
org.postgresql.jdbc2.AbstractJdbc2Statement.execute(AbstractJdbc2Statement.java:452)at
org.postgresql.jdbc2.AbstractJdbc2Statement.executeWithFlags(AbstractJdbc2Statement.java:354)at
org.postgresql.jdbc2.AbstractJdbc2Statement.executeQuery(AbstractJdbc2Statement.java:258)at
org.apache.jsp.Test_jsp._jspService(Test_jsp.java:104)at
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97)at
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)at
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:332)at
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314)at
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264)at
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)at
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)at
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)at
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)at
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)at
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)at
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)at
org.apache.coyote.http11.Http11AprProcessor.process(Http11AprProcessor.java:831)at
org.apache.coyote.http11.Http11AprProtocol$Http11ConnectionHandler.process(Http11AprProtocol.java:639)at
org.apache.tomcat.util.net.AprEndpoint$Worker.run(AprEndpoint.java:1196)atjava.lang.Thread.run(Unknown Source)
SQLException: SQLState(08006)
>From: Oliver Jowett <oliver@opencloud.com>
>To: Tom Lane <tgl@sss.pgh.pa.us>
>CC: Dave Cramer <pg@fastcrypt.com>, JEAN-PIERRE PELLETIER
><pelletier_32@sympatico.ca>, List <pgsql-jdbc@postgresql.org>,
>PostgreSQL-development <pgsql-hackers@postgresql.org>
>Subject: Re: [HACKERS] [JDBC] server process (PID 1188) exited with exit
>code
>Date: Wed, 25 Oct 2006 03:26:07 +0000
>
>Tom Lane wrote:
>
>> NULL, /* let the backend deduce param type */
>
>I think the JDBC driver will be passing the int4 OID for the param type in
>this case.
>
>Best thing is probably for the OP to run with loglevel=2 and see exactly
>what's being sent, though.
>
>-O
>
>---------------------------(end of broadcast)---------------------------
>TIP 1: if posting/reading through Usenet, please send an appropriate
> subscribe-nomail command to majordomo@postgresql.org so that your
> message can get through to the mailing list cleanly
"JEAN-PIERRE PELLETIER" <pelletier_32@sympatico.ca> writes:
> 08:47:19.296 (1) FE=> Parse(stmt=null,query="select $1 from (select * from
> pg_database) t",oids={23})
Actually, now that I look closely, this command is almost certainly
triggering this beta1 bug:
http://archives.postgresql.org/pgsql-committers/2006-10/msg00107.php
Please try beta2 and see if it isn't fixed.
regards, tom lane
Yes, the problem is gone in 8.2 beta2.
Thanks all for an outstanding product and support,
Jean-Pierre Pelletier
>From: Tom Lane <tgl@sss.pgh.pa.us>
>To: "JEAN-PIERRE PELLETIER" <pelletier_32@sympatico.ca>
>CC: pgsql-hackers@postgresql.org, pg@fastcrypt.com, oliver@opencloud.com
>Subject: Re: [HACKERS] [JDBC] server process (PID 1188) exited with exit
>code Date: Wed, 25 Oct 2006 10:15:03 -0400
>
>"JEAN-PIERRE PELLETIER" <pelletier_32@sympatico.ca> writes:
> > 08:47:19.296 (1) FE=> Parse(stmt=null,query="select $1 from (select *
>from
> > pg_database) t",oids={23})
>
>Actually, now that I look closely, this command is almost certainly
>triggering this beta1 bug:
>http://archives.postgresql.org/pgsql-committers/2006-10/msg00107.php
>
>Please try beta2 and see if it isn't fixed.
>
> regards, tom lane
Re: [JDBC] server process (PID 1188) exited with exit code -1073741819, 8.2 beta1
От
"Thomas H."
Дата:
>> This is a server bug, I will post to hackers for you, > > Please provide a complete test case. I tried to reproduce the failure > in libpq, with tom, i've just noticed this is the exact same error message & errorcode as i get when updating a table that contains a tsearch2 vector column 2006-10-25 20:08:42 [3420] LOG: 00000: server process (PID 2332) exited with exit code -1073741819 2006-10-25 20:08:42 [3420] LOCATION: LogChildExit, postmaster.c:2385 (test case provided, see "Re: [BUGS] 8.2beta1 (w32): server process crash (tsvector)" from oct. 17th) maybe dave is also using tsearch2 in the involved tables, or is this a general error code? regards, thomas
Dave Cramer <pg@fastcrypt.com> writes:
> This is a server bug, I will post to hackers for you, it has little
> to do with JDBC, however the ? can't be a column in a prepared statement
I cannot reproduce any problem using what I think is equivalent in libpq:
/* Here is our out-of-line parameter value */
paramValues[0] = "1";
res = PQexecParams(conn,
"select $1 from (select * from pg_database) t",
1, /* one param */
NULL, /* let the backend deduce param type */
paramValues,
NULL, /* don't need param lengths since text */
NULL, /* default to all text params */
0); /* ask for text results */
This comes back with
ERROR: could not determine data type of parameter $1
but no crash. Is the JDBC driver doing anything interesting as a result
of the
pstmt.setObject(1, 1);
and if so what?
regards, tom lane
Tom Lane wrote:
> Dave Cramer <pg@fastcrypt.com> writes:
>
>>This is a server bug, I will post to hackers for you, it has little
>>to do with JDBC, however the ? can't be a column in a prepared statement
>
> I cannot reproduce any problem using what I think is equivalent in libpq:
I thought we got this one sorted out already, it was a server bug fixed
in beta2? At the time you said:
> "JEAN-PIERRE PELLETIER" <pelletier_32@sympatico.ca> writes:
>
>>> 08:47:19.296 (1) FE=> Parse(stmt=null,query="select $1 from (select * from
>>> pg_database) t",oids={23})
>
>
> Actually, now that I look closely, this command is almost certainly
> triggering this beta1 bug:
> http://archives.postgresql.org/pgsql-committers/2006-10/msg00107.php
>
> Please try beta2 and see if it isn't fixed.
>
> regards, tom lane
(and the problem went away in beta2)
-O