0
a C++ program을 실행하려고 시도하면 NetBSD에만 해당되는 것으로 나타나는 부분적으로 오류가 발생합니다. Bert Hubert는 간단한 테스트 프로그램을 작성했으며 (실제로이 메시지가 끝날 때) NetBSD에서만 충돌이 발생합니다.NetBSD에서만 스레드 로컬 저장 영역을 segfaults합니까?
% uname -a
NetBSD golgoth 5.0.1 NetBSD 5.0.1 (GENERIC) #0: Thu Oct 1 15:46:16 CEST 2009
[email protected]:/usr/obj/sys/arch/i386/compile/GENERIC i386
% g++ --version
g++ (GCC) 4.1.3 20080704 prerelease (NetBSD nb2 20081120)
Copyright (C) 2006 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
% gdb thread-local-storage-powerdns
GNU gdb 6.5
Copyright (C) 2006 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are
welcome to change it and/or 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.
This GDB was configured as "i386--netbsdelf"...
(gdb) run
Starting program: /home/stephane/Programmation/C++/essais/thread-local-storage-powerdns
Program received signal SIGSEGV, Segmentation fault.
0x0804881b in main() at thread-local-storage-powerdns.cc:20
20 t_a = new Bogo('a');
(gdb)
다른 유닉스에서는 잘 작동합니다. C++ 스레드 로컬 저장소와 함께 NetBSD에 알려진 문제점이 있습니까?
#include <stdio.h>
class Bogo
{
public:
explicit Bogo(char a)
{
d_a = a;
}
char d_a;
};
__thread Bogo* t_a;
int main()
{
t_a = new Bogo('a');
Bogo* b = t_a;
printf("%c\n", b->d_a);
}
더 나은 오류 메시지를 생성하기 위해 컴파일 타임이나 런타임에이를 감지하는 명확한 방법이 있습니까? 기존 autoconf 규칙, 예를 들어? – bortzmeyer
그것에 관한 NetBSD 문서에 대한 모든 포인터는 무엇입니까? 나는 수색 엔진으로 그것을 찾아 낼 수 없었다. – bortzmeyer
http://www.mail-archive.com/[email protected]/msg04644.html 내가 찾을 수있는 최고입니다. – Joe