Opened 13 years ago

Closed 10 years ago

#3847 closed Bugs (wontfix)

Unable to statically link thread lib on ia64.

Reported by: tomasz.wilk@… Owned by: viboes
Milestone: To Be Determined Component: thread
Version: Boost 1.41.0 Severity: Problem
Keywords: thread ia64 _tls_used Cc: Bryce Adelstein Lelbach

Description

An attempt to statically link thread library on Itanium (ia64) platform generates the following error:

libboost_thread-vc100-mt-gd-1_41.lib(tss_pe.obj) : error LNK2003: gp relative fixup to symbol not in short data section '_tls_used' LINK : fatal error LNK1165: link failed because of fixup errors

I was able to verify this issue using boost 1.37 with vc8 compiler as well as boost 1.41 with vc10 beta2

The workaround is to force dynamic linking using

#define BOOST_THREAD_DYN_DLL

which is not always acceptable.

Here is a sample program:

#include<stdio.h>

//#define BOOST_THREAD_DYN_DLL
#include<boost/thread.hpp>

void threadBody()
{
	printf("hello from thread");
	boost::this_thread::sleep(boost::posix_time::seconds(5));
}

int main(void)
{
	printf("Hello world!");

	boost::thread myThread(threadBody);
	myThread.join();

	return 0;
}

Change History (8)

comment:1 by Bryce Adelstein Lelbach, 12 years ago

Cc: Bryce Adelstein Lelbach added
Milestone: Boost 1.42.0Boost-1.45.0
Severity: ProblemShowstopper

This is similar in nature to #4258 - #4258 reports this problem only on mingw.

comment:2 by Anthony Williams, 12 years ago

Status: newassigned

The _tls_used stuff is there to ensure correct cleanup of the per-thread data structures used by boost.thread. I do not know how to fix this for IA64.

Since what is there is broken at the moment, I could remove it entirely, and leave it to users to define boost::tss_cleanup_implemented(), and ensure that boost::on_thread_exit is called when every thread exits.

comment:3 by Anthony Williams, 12 years ago

Severity: ShowstopperProblem

IA64 is not a tested platform, so this is not a "showstopper"

comment:4 by viboes, 10 years ago

Milestone: Boost 1.45.0Boost 1.50.0

comment:5 by viboes, 10 years ago

Milestone: Boost 1.50.0To Be Determined

comment:6 by viboes, 10 years ago

Owner: changed from Anthony Williams to viboes
Status: assignednew

In the absence of a complete fix, I propose to either force BOOST_THREAD_DYN_DLL with this platform (which should be the define to test?) or as suggested by Anthony "leave it to users to define boost::tss_cleanup_implemented(), and ensure that boost::on_thread_exit is called when every thread exits."

Which option is OK for you?

comment:7 by viboes, 10 years ago

Status: newassigned

comment:8 by viboes, 10 years ago

Resolution: wontfix
Status: assignedclosed

Moved to wontfix as there is no response from the PO.

Note: See TracTickets for help on using tickets.