Re: [HACKERS] Also on SVR4 (Compiling 6.4 on NetBSD-current/pc532)

From: Frank Ridderbusch <ridderbusch(dot)pad(at)sni(dot)de>
To: pgsql-hackers(at)postgreSQL(dot)org
Cc: Jon Buller <jonb(at)metronet(dot)com>
Subject: Re: [HACKERS] Also on SVR4 (Compiling 6.4 on NetBSD-current/pc532)
Date: 1998-09-14 09:37:19
Message-ID: 13820.58319.290000.84873@utensil
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

Thomas G. Lockhart writes:
> > I have a current version of PostgreSQL running on my pc532 now.
> > (It's a NS32K based machine. Somewhat of an antique really...)
> > It did not, however, get the datetime test correct.
> > ... I suspect (a NetBSD/pc532 problem) due to a lack of people
> > screaming.
>
> Screaming means you get to help do development :)
>
> > I did build 6.3.2 with -DDATEDEBUG, but I'm not coherent enough
> > (yet?) to properly deduce anything yet. It appeared to all be
> > correct until it printed the results, implying that libc or a
> > syscall was returning some funny constant perhaps?
>
> Ah. It's slowly coming back to me, so here are some suggestions:
>
> "epoch" and "current" are stored internally in the database so that the
> support code can pull one back out and say "oh! that's supposed to be
> 'epoch'", for example. So, I used _very_ small floating point numbers to
> represent those special constants (numbers much smaller than one could
> get by doing the usual arithmetic, at least under normal circumstances).
>
> I'll bet that your machine is somehow pushing those numbers to be
> exactly zero, which corresponds to Y2K (with the timezone offset, that
> is what you are seeing). So, try looking at the numbers, and try seeing
> what they are being set to. In src/include/utils/dt.h, you will see that
> current and epoch are being set to DBL_MIN and -DBL_MIN, respectively.
> Make sure that these are not identical to zero (they are something like
> 1e-308 on my machine). You can change dt.h to make these some other
> usually unique number, say +/-1e-20 for now.
>
> And track down why DBL_MIN on your machine isn't the smallest allowed
> double-precision number...
>
> - Tom

Well, finally somebody, who sees the same problems as me. I had the
same problems with 6.3, which I didn't pursue due to lack off time.

However, now I retried with the 6.4 snapshot from Sep. 11. I compiled
under Siemens SINIX (Mips based SVR4) and the system cc.

If I issue the following sql statement, the backend dies with a core.

regression=> select ('now'::datetime - 'current'::datetime) as "Zero";

I guess the following result is ok.

regression=> select ('current'::datetime) as "Zero";
Zero
-------
current
(1 row)

I guess, somehow the applying math operators to datetime causes the
core dumps.

Here is the GDB stack trace from the core. (Only dt.c

$ gdb ../../../bin/postgres core
GDB is free software and you are welcome to distribute copies of it
under certain conditions; type "show copying" to see the conditions.
There is absolutely no warranty for GDB; type "show warranty" for details.
GDB 4.15.1 (mips-sni-sysv4), Copyright 1995 Free Software Foundation, Inc...
Core was generated by `/local/pgsql-6.4/bin/postmaster -i -p 2222 '.
Program terminated with signal 10, Bus error.
Reading symbols from /lib/libnsl.so...done.
Reading symbols from /lib/libsocket.so...done.
Reading symbols from /lib/libdl.so...done.
Reading symbols from /lib/libmutex.so...done.
Reading symbols from /usr/lib/libc.so.1...done.
(gdb) where
#0 0x51595c in tm2datetime (tm=0x7fffb334, fsec=1.0609881999384027e-314,
tzp=0x5db6d4, result=0x542658) at dt.c:2517
#1 0x50e8cc in SetDateTime (dt=2.2250738585072022e-308) at dt.c:346
^^^^^^^^^^^^^^^^^^^^^^^
this is DBL_MIN

#2 0x510884 in datetime_mi (datetime1=0x60d370, datetime2=0x60d3d0)
at dt.c:783
#3 0x5420b0 in fmgr_c ()
#4 0x46cf98 in ExecMakeFunctionResult ()
#5 0x46d034 in ExecEvalOper ()
#6 0x46d418 in ExecEvalExpr ()
#7 0x46d838 in ExecTargetList ()
#8 0x46dbf8 in ExecProject ()
#9 0x476e14 in ExecResult ()
#10 0x46b32c in ExecProcNode ()
#11 0x46a3e0 in ExecutePlan ()
#12 0x469ab0 in ExecutorRun ()
#13 0x4fc9dc in ProcessQueryDesc ()
#14 0x4fcabc in ProcessQuery ()
#15 0x4faa10 in pg_exec_query_dest ()
#16 0x4fa7dc in pg_exec_query ()
#17 0x4fc0a8 in PostgresMain ()
#18 0x4d6a64 in DoBackend ()
#19 0x4d6260 in BackendStartup ()
#20 0x4d5050 in ServerLoop ()
#21 0x4d4840 in PostmasterMain ()
#22 0x4875c0 in main ()
#23 0x418004 in __start ()
(gdb)

Does this give you some additional hints?

Oh, one more thing. With 6.3, when psql lost connection with the
backend, I got an error message saying so. With 6.4 it psql seems to
be simply hanging.
--
MfG/Regards
--
/==== Siemens Nixdorf Informationssysteme AG
/ Ridderbusch / , Abt.: OEC XS QM4
/ /./ Heinz Nixdorf Ring
/=== /,== ,===/ /,==, // 33106 Paderborn, Germany
/ // / / // / / \ Tel.: (49) 5251-8-15211
/ / `==/\ / / / \ Email: ridderbusch(dot)pad(at)sni(dot)de

Since I have taken all the Gates out of my computer, it finally works!!

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Patrick Welche 1998-09-14 10:05:41 Re: [HACKERS] Compiling 6.4 on NetBSD-current/pc532
Previous Message Michael Meskes 1998-09-14 09:20:08 ecpg patches