簡體   English   中英

僅在NetBSD上的線程本地存儲段錯誤?

[英]Thread-local storage segfaults on NetBSD only?

嘗試運行C ++程序時 ,出現分段錯誤,這些錯誤似乎特定於NetBSD。 Bert Hubert編寫了簡單的測試程序(在此消息的末尾),實際上,它僅在NetBSD上崩潰。

% uname -a
NetBSD golgoth 5.0.1 NetBSD 5.0.1 (GENERIC) #0: Thu Oct  1 15:46:16 CEST 2009
+stephane@golgoth:/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)

在其他Unix上,它可以正常工作。 使用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);
}

NetBSD不支持線程本地存儲。 但是,大多數其他BSD都這樣做。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM