c++/6774: printf("%lld") prints bad values

Brian Ceccarelli brian@talusmusic.com
Thu May 23 07:53:00 GMT 2002


I think I now discovered the real problem.

     pthread_t     id;

     status = pthread_create(&id, ...)

  The first call to pthread_create returns a valid thread ID 'id' argument.
Subsequent pthread_create calls return 0 for id.   'status' is 0 in each
case indicating successful thread creation.  (My multithreaded program works
fine with the exception of that thread id.)

   I use a C++ object for each thread.  I was setting my object's ID
attribute to the 'id' argument returned by pthread_create.   This works for
the first thread I create, but not for subsequent threads.

   When I was printing out the thread_id, (which I later cast to long long),
I was using "%lld".   So I thought %lld was the problem.  Since that wasn't
the problem, I think the problem is with pthread_create.

   pthread_self() always returns the correct ID.    I now use this function
everytime I need the thread-id.

   Do you want me to file a separate bug report on this?     Or am I going
nuts again?   :)    I am on Red Hat Linux on an Intel platform.   Same thing
happens on Mandrake Linux on Intel.



Brian
brian@talusmusic.com




-----Original Message-----
From: rth@gcc.gnu.org [mailto:rth@gcc.gnu.org]
Sent: Thursday, May 23, 2002 2:42 AM
To: brian@talusmusic.com; gcc-bugs@gcc.gnu.org; gcc-prs@gcc.gnu.org;
nobody@gcc.gnu.org
Subject: Re: c++/6774: printf("%lld") prints bad values


Synopsis: printf("%lld") prints bad values

State-Changed-From-To: open->closed
State-Changed-By: rth
State-Changed-When: Wed May 22 23:42:06 2002
State-Changed-Why:
    Buggy test case.  You have a typo in your printf format.
    Should be "1 << %lld = %lld".  Using -Wall would have
    pointed this out:

    z.c: In function `main':
    z.c:11: warning: int format, different type arg (arg 2)



http://gcc.gnu.org/cgi-bin/gnatsweb.pl?cmd=view%20audit-trail&database=gcc&p
r=6774



More information about the Gcc-bugs mailing list