[Bug 1001618] [NEW] gcc link step fails against -lpthread and -ldl

Richard Eccles r.q.eccles at gmail.com
Sat May 19 12:13:03 UTC 2012


Public bug reported:

This bug found for both -ldl and -lpthread on a clean install of Ubuntu 12.04
Tried before and after updates, on my presario f700 laptop (using both 32 & 64 bit versions) and on VirtualBox using 32bit.
All produced exactly the same result.

Bug reproduced for libpthread only using the simple test application
given below - it builds and runs fine in 11.04.

Build command and output is :
-------------------------------------------------------------------------------------------------
gcc -lpthread pthread_test.c -o test
/tmp/ccJSnO1N.o: In function `main':
pthread_test.c:(.text+0xfc): undefined reference to `pthread_create'
pthread_test.c:(.text+0x119): undefined reference to `pthread_create'
pthread_test.c:(.text+0x12a): undefined reference to `pthread_join'
pthread_test.c:(.text+0x13b): undefined reference to `pthread_join'
collect2: ld returned 1 exit status
-------------------------------------------------------------------------------------------------


And the test file source is :
-------------------------------------------------------------------------------------------------
#include <stdio.h>
#include <stdlib.h>
#include <pthread.h>

static int idle_count = 1000000;

void *thread_worker( void *ptr )
{
	int c = 0, cc = 0;
	int id = ( ptr ) ? *((int*)ptr) : 0;

	while( c++ < 10 ) {
		printf("Thread(%d) %d\n", id, c);
		/* Slow things down by doing some make work.	*/
		for( cc = 0; cc < idle_count; cc++ ) {;}
	}
}


int main ( int argc, char **argv )
{
	pthread_t thrd1, thrd2;
	int id1 = 1, id2 = 2;

	/* Set idle count from command line if given.	*/
	if( argc > 1 ) {
		idle_count = atoi( argv[1] );
		if( idle_count < 1000 ) idle_count = 1000000;
	}
	printf("Idle count is [%d]\n", idle_count );

	pthread_create( &thrd1, NULL, thread_worker, (void*)(& id1) );
	pthread_create( &thrd2, NULL, thread_worker, (void*)(& id2) );

	pthread_join( thrd1, NULL );
	pthread_join( thrd2, NULL );

	exit( 0 );
}
----------------------------------------------------------------------------------------------------
test file ends.

ProblemType: Bug
DistroRelease: Ubuntu 12.04
Package: gcc 4:4.6.3-1ubuntu5
ProcVersionSignature: Ubuntu 3.2.0-24.37-generic 3.2.14
Uname: Linux 3.2.0-24-generic x86_64
NonfreeKernelModules: nvidia
ApportVersion: 2.0.1-0ubuntu7
Architecture: amd64
Date: Sat May 19 12:44:18 2012
InstallationMedia: Ubuntu 12.04 LTS "Precise Pangolin" - Release amd64 (20120425)
ProcEnviron:
 LANGUAGE=en_GB:en
 TERM=xterm
 PATH=(custom, no user)
 LANG=en_GB.UTF-8
 SHELL=/bin/bash
SourcePackage: gcc-defaults
UpgradeStatus: No upgrade log present (probably fresh install)

** Affects: gcc-defaults (Ubuntu)
     Importance: Undecided
         Status: New


** Tags: amd64 apport-bug precise

-- 
You received this bug notification because you are a member of Ubuntu
Foundations Bugs, which is subscribed to gcc-defaults in Ubuntu.
https://bugs.launchpad.net/bugs/1001618

Title:
  gcc link step fails against -lpthread and -ldl

Status in “gcc-defaults” package in Ubuntu:
  New

Bug description:
  This bug found for both -ldl and -lpthread on a clean install of Ubuntu 12.04
  Tried before and after updates, on my presario f700 laptop (using both 32 & 64 bit versions) and on VirtualBox using 32bit.
  All produced exactly the same result.

  Bug reproduced for libpthread only using the simple test application
  given below - it builds and runs fine in 11.04.

  Build command and output is :
  -------------------------------------------------------------------------------------------------
  gcc -lpthread pthread_test.c -o test
  /tmp/ccJSnO1N.o: In function `main':
  pthread_test.c:(.text+0xfc): undefined reference to `pthread_create'
  pthread_test.c:(.text+0x119): undefined reference to `pthread_create'
  pthread_test.c:(.text+0x12a): undefined reference to `pthread_join'
  pthread_test.c:(.text+0x13b): undefined reference to `pthread_join'
  collect2: ld returned 1 exit status
  -------------------------------------------------------------------------------------------------

  
  And the test file source is :
  -------------------------------------------------------------------------------------------------
  #include <stdio.h>
  #include <stdlib.h>
  #include <pthread.h>

  static int idle_count = 1000000;

  void *thread_worker( void *ptr )
  {
  	int c = 0, cc = 0;
  	int id = ( ptr ) ? *((int*)ptr) : 0;

  	while( c++ < 10 ) {
  		printf("Thread(%d) %d\n", id, c);
  		/* Slow things down by doing some make work.	*/
  		for( cc = 0; cc < idle_count; cc++ ) {;}
  	}
  }

  
  int main ( int argc, char **argv )
  {
  	pthread_t thrd1, thrd2;
  	int id1 = 1, id2 = 2;

  	/* Set idle count from command line if given.	*/
  	if( argc > 1 ) {
  		idle_count = atoi( argv[1] );
  		if( idle_count < 1000 ) idle_count = 1000000;
  	}
  	printf("Idle count is [%d]\n", idle_count );

  	pthread_create( &thrd1, NULL, thread_worker, (void*)(& id1) );
  	pthread_create( &thrd2, NULL, thread_worker, (void*)(& id2) );

  	pthread_join( thrd1, NULL );
  	pthread_join( thrd2, NULL );

  	exit( 0 );
  }
  ----------------------------------------------------------------------------------------------------
  test file ends.

  ProblemType: Bug
  DistroRelease: Ubuntu 12.04
  Package: gcc 4:4.6.3-1ubuntu5
  ProcVersionSignature: Ubuntu 3.2.0-24.37-generic 3.2.14
  Uname: Linux 3.2.0-24-generic x86_64
  NonfreeKernelModules: nvidia
  ApportVersion: 2.0.1-0ubuntu7
  Architecture: amd64
  Date: Sat May 19 12:44:18 2012
  InstallationMedia: Ubuntu 12.04 LTS "Precise Pangolin" - Release amd64 (20120425)
  ProcEnviron:
   LANGUAGE=en_GB:en
   TERM=xterm
   PATH=(custom, no user)
   LANG=en_GB.UTF-8
   SHELL=/bin/bash
  SourcePackage: gcc-defaults
  UpgradeStatus: No upgrade log present (probably fresh install)

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/gcc-defaults/+bug/1001618/+subscriptions




More information about the foundations-bugs mailing list