Re: UUIDs generated using ossp-uuid on windows not unique

Started by MUHAMMAD ASIFalmost 16 years ago5 messages
#1MUHAMMAD ASIF
anaeem.it@hotmail.com

On Tue, Jun 17, 2008 at 11:17 AM, Hiroshi Saito
<z-saito(at)guitar(dot)ocn(dot)ne(dot)jp> wrote:

Hi.

Please this.
http://winpg.jp/~saito/pg_work/OSSP_win32/msvc/

Ahh, a makefile - that makes things somewhat clearer :-)

Thanks - I've updated the build machine so future releases will
include this fix.

--
Dave Page
EnterpriseDB UK: http://www.enterprisedb.com

It seems that link http://winpg.jp/~saito/pg_work/OSSP_win32/msvc/ is no longer available. I am working on uuid-ossp contrib module, I want to share my findings with you.Thanks.
I have downloaded uuid-1.6.2.tar.gz from http://www.ossp.org/pkg/lib/uuid/ . It successfully built with MinGW gcc and made libuuid.a, I renamed it to uuid.lib to build uuid-ossp contrib module with visual studio 2005. uuid-ossp give the following linker error with VC2005 i.e.
  
    Linking...
    Creating library Release\uuid-ossp\uuid-ossp.lib and object Release\uuid-ossp\uuid-ossp.exp
    uuid.lib(uuid_time.o) : error LNK2019: unresolved external symbol ___divdi3 referenced in function _uuid_time_gettimeofday
    uuid.lib(uuid_time.o) : error LNK2019: unresolved external symbol ___moddi3 referenced in function _uuid_time_gettimeofday
    uuid.lib(uuid_str.o) : error LNK2019: unresolved external symbol ___umoddi3 referenced in function _fmtint
    uuid.lib(uuid_str.o) : error LNK2019: unresolved external symbol ___udivdi3 referenced in function _fmtint
    .\Release\uuid-ossp\uuid-ossp.dll : fatal error LNK1120: 4 unresolved externals

MinGW libgcc.a contains these symbols and these routines are not implemented in c ( its assembly code to make it fast ) so I extracted _divdi3.o _moddi3.o _umoddi3.o _udivdi3.o (we can add these additional files to uuid.lib to make build easy) from libgcc.a and link it with uuid-ossp contrib. I have tested generated uuid-ossp contrib it gives the following results that seems fine i.e.

    edb=# select uuid_generate_v4();
               uuid_generate_v4
    --------------------------------------
     20ff31ce-77a8-4db6-ac7f-3b55380e46ac
    (1 row)
  
  
    edb=#
    edb=# select uuid_generate_v4()
    edb-# ;
               uuid_generate_v4
    --------------------------------------
     e58c46d5-7161-47ec-8006-f905c6b66a1f
    (1 row)

Any thoughts on this ?.

Best Regards,
Asif Naeem
EnterpriseDB Pakistan: http://www.enterprisedb.com

_________________________________________________________________
Hotmail: Free, trusted and rich email service.
https://signup.live.com/signup.aspx?id=60969

#2Tom Lane
tgl@sss.pgh.pa.us
In reply to: MUHAMMAD ASIF (#1)

MUHAMMAD ASIF <anaeem.it@hotmail.com> writes:

I have downloaded uuid-1.6.2.tar.gz from http://www.ossp.org/pkg/lib/uuid/ . It successfully built with MinGW gcc and made libuuid.a, I renamed it to uuid.lib to build uuid-ossp contrib module with visual studio 2005. uuid-ossp give the following linker error with VC2005 i.e.
��
��� Linking...
��� Creating library Release\uuid-ossp\uuid-ossp.lib and object Release\uuid-ossp\uuid-ossp.exp
��� uuid.lib(uuid_time.o) : error LNK2019: unresolved external symbol ___divdi3 referenced in function _uuid_time_gettimeofday
��� uuid.lib(uuid_time.o) : error LNK2019: unresolved external symbol ___moddi3 referenced in function _uuid_time_gettimeofday
��� uuid.lib(uuid_str.o) : error LNK2019: unresolved external symbol ___umoddi3 referenced in function _fmtint
��� uuid.lib(uuid_str.o) : error LNK2019: unresolved external symbol ___udivdi3 referenced in function _fmtint
��� .\Release\uuid-ossp\uuid-ossp.dll : fatal error LNK1120: 4 unresolved externals

Generally, gcc is supposed to arrange for -lgcc to be included
automatically in links if it's needed. I have seen failures like this
before on other platforms, and it generally had something to do with
using gcc followed by a non-gnu linker; which indeed seems to describe
what you did here. I would suggest adding -lgcc to your VC project;
or maybe where it actually went missing was in your build of libuuid.

MinGW libgcc.a contains these symbols and these routines are not
implemented in c ( its assembly code to make it fast ) so I extracted
_divdi3.o _moddi3.o _umoddi3.o _udivdi3.o (we can add these additional
files to uuid.lib to make build easy) from libgcc.a and link it with
uuid-ossp contrib.

This seems entirely inappropriate; it makes unwarranted assumptions
about which parts of libgcc are needed, and we couldn't ship any such
thing anyhow for license reasons.

regards, tom lane

#3Hiroshi Saito
z-saito@guitar.ocn.ne.jp
In reply to: MUHAMMAD ASIF (#1)

Hi MUHAMMAD-san.

Sorry late reaction...
unfortunately, My machine crashed and was not revitalized.:-(
However, There is a thing of now a few.
http://winpg.jp/~saito/pg_work/OSSP_win32/msvc/

I have a comment from Ralf S. Engelschall.
==
Sorry for being late with the release of OSSP uuid 2.0.0.
Yes, it will be released the next days and will contain the
Win32 support I already prepared a few months ago.
==
It seems that however, he is very busy. ...

Regards,
Hiroshi Saito

----- Original Message -----
From: "MUHAMMAD ASIF" <anaeem.it@hotmail.com>

On Tue, Jun 17, 2008 at 11:17 AM, Hiroshi Saito
<z-saito(at)guitar(dot)ocn(dot)ne(dot)jp> wrote:

Hi.

Please this.
http://winpg.jp/~saito/pg_work/OSSP_win32/msvc/

Ahh, a makefile - that makes things somewhat clearer :-)

Thanks - I've updated the build machine so future releases will
include this fix.

--
Dave Page
EnterpriseDB UK: http://www.enterprisedb.com

It seems that link http://winpg.jp/~saito/pg_work/OSSP_win32/msvc/ is no longer available. I
am working on uuid-ossp contrib module, I want to share my findings with you.Thanks.
I have downloaded uuid-1.6.2.tar.gz from http://www.ossp.org/pkg/lib/uuid/ . It successfully
built with MinGW gcc and made libuuid.a, I renamed it to uuid.lib to build uuid-ossp contrib
module with visual studio 2005. uuid-ossp give the following linker error with VC2005 i.e.

Linking...
Creating library Release\uuid-ossp\uuid-ossp.lib and object Release\uuid-ossp\uuid-ossp.exp
uuid.lib(uuid_time.o) : error LNK2019: unresolved external symbol ___divdi3 referenced in
function _uuid_time_gettimeofday
uuid.lib(uuid_time.o) : error LNK2019: unresolved external symbol ___moddi3 referenced in
function _uuid_time_gettimeofday
uuid.lib(uuid_str.o) : error LNK2019: unresolved external symbol ___umoddi3 referenced in
function _fmtint
uuid.lib(uuid_str.o) : error LNK2019: unresolved external symbol ___udivdi3 referenced in
function _fmtint
.\Release\uuid-ossp\uuid-ossp.dll : fatal error LNK1120: 4 unresolved externals

MinGW libgcc.a contains these symbols and these routines are not implemented in c ( its
assembly code to make it fast ) so I extracted _divdi3.o _moddi3.o _umoddi3.o _udivdi3.o (we
can add these additional files to uuid.lib to make build easy) from libgcc.a and link it
with uuid-ossp contrib. I have tested generated uuid-ossp contrib it gives the following
results that seems fine i.e.

edb=# select uuid_generate_v4();
uuid_generate_v4
--------------------------------------
20ff31ce-77a8-4db6-ac7f-3b55380e46ac
(1 row)

edb=#
edb=# select uuid_generate_v4()
edb-# ;
uuid_generate_v4
--------------------------------------
e58c46d5-7161-47ec-8006-f905c6b66a1f
(1 row)

Any thoughts on this ?.

Best Regards,
Asif Naeem
EnterpriseDB Pakistan: http://www.enterprisedb.com

_________________________________________________________________
Hotmail: Free, trusted and rich email service.
https://signup.live.com/signup.aspx?id=60969=

#4MUHAMMAD ASIF
anaeem.it@hotmail.com
In reply to: Tom Lane (#2)

To: anaeem.it@hotmail.com
CC: dpage@postgresql.org; z-saito@guitar.ocn.ne.jp; pgsql-hackers@postgresql.org
Subject: Re: [HACKERS] UUIDs generated using ossp-uuid on windows not unique
Date: Tue, 30 Mar 2010 10:01:50 -0400
From: tgl@sss.pgh.pa.us

MUHAMMAD ASIF <anaeem.it@hotmail.com> writes:

I have downloaded uuid-1.6.2.tar.gz from http://www.ossp.org/pkg/lib/uuid/ . It successfully built with MinGW gcc and made libuuid.a, I renamed it to uuid.lib to build uuid-ossp contrib module with visual studio 2005. uuid-ossp give the following linker error with VC2005 i.e.

Linking...
Creating library Release\uuid-ossp\uuid-ossp.lib and object Release\uuid-ossp\uuid-ossp.exp
uuid.lib(uuid_time.o) : error LNK2019: unresolved external symbol ___divdi3 referenced in function _uuid_time_gettimeofday
uuid.lib(uuid_time.o) : error LNK2019: unresolved external symbol ___moddi3 referenced in function _uuid_time_gettimeofday
uuid.lib(uuid_str.o) : error LNK2019: unresolved external symbol ___umoddi3 referenced in function _fmtint
uuid.lib(uuid_str.o) : error LNK2019: unresolved external symbol ___udivdi3 referenced in function _fmtint
.\Release\uuid-ossp\uuid-ossp.dll : fatal error LNK1120: 4 unresolved externals

Generally, gcc is supposed to arrange for -lgcc to be included
automatically in links if it's needed. I have seen failures like this
before on other platforms, and it generally had something to do with
using gcc followed by a non-gnu linker; which indeed seems to describe
what you did here. I would suggest adding -lgcc to your VC project;
or maybe where it actually went missing was in your build of libuuid.

you are right its not good idea to generate binary with non compatible tools that may lead to unexpected results and could make debugging worse.

MinGW libgcc.a contains these symbols and these routines are not
implemented in c ( its assembly code to make it fast ) so I extracted
_divdi3.o _moddi3.o _umoddi3.o _udivdi3.o (we can add these additional
files to uuid.lib to make build easy) from libgcc.a and link it with
uuid-ossp contrib.

This seems entirely inappropriate; it makes unwarranted assumptions
about which parts of libgcc are needed, and we couldn't ship any such
thing anyhow for license reasons.

regards, tom lane

I dont know much about licencing , I was assuming that if we can create application with gcc then we can use parts of gcc according to our will too. that was a wrong assumption, thank you for details :).

Best Regards,
Asif Naeem

_________________________________________________________________
Hotmail: Trusted email with Microsoft’s powerful SPAM protection.
https://signup.live.com/signup.aspx?id=60969

#5MUHAMMAD ASIF
anaeem.it@hotmail.com
In reply to: Hiroshi Saito (#3)

From: z-saito@guitar.ocn.ne.jp
To: anaeem.it@hotmail.com; dpage@postgresql.org
CC: pgsql-hackers@postgresql.org
Subject: Re: UUIDs generated using ossp-uuid on windows not unique
Date: Wed, 31 Mar 2010 01:52:50 +0900

Hi MUHAMMAD-san.

Sorry late reaction...
unfortunately, My machine crashed and was not revitalized.:-(
However, There is a thing of now a few.
http://winpg.jp/~saito/pg_work/OSSP_win32/msvc/

I have a comment from Ralf S. Engelschall.
==
Sorry for being late with the release of OSSP uuid 2.0.0.
Yes, it will be released the next days and will contain the
Win32 support I already prepared a few months ago.
==
It seems that however, he is very busy. ...

Regards,
Hiroshi Saito

Thank you Sir for sharing msvc build. I dont need to use MinGW generated libraries with VisualC project anymore :). That is nice news that OSSP UUID 2.0.0 will support VisualC. thanks.

Best Regards,

Asif Naeem

_________________________________________________________________
Hotmail: Trusted email with powerful SPAM protection.
https://signup.live.com/signup.aspx?id=60969