From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 28764 invoked by alias); 23 Jan 2002 16:26:04 -0000 Mailing-List: contact gcc-prs-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-prs-owner@gcc.gnu.org Received: (qmail 28548 invoked by uid 71); 23 Jan 2002 16:26:02 -0000 Resent-Date: 23 Jan 2002 16:26:02 -0000 Resent-Message-ID: <20020123162602.28547.qmail@sources.redhat.com> Resent-From: gcc-gnats@gcc.gnu.org (GNATS Filer) Resent-To: nobody@gcc.gnu.org Resent-Cc: gcc-prs@gcc.gnu.org, gcc-bugs@gcc.gnu.org Resent-Reply-To: gcc-gnats@gcc.gnu.org, jjessel@amadeus.net Received:(qmail 23043 invoked by uid 61); 23 Jan 2002 16:17:47 -0000 Message-Id:<20020123161747.23042.qmail@sources.redhat.com> Date: Wed, 23 Jan 2002 08:26:00 -0000 From: jjessel@amadeus.net Reply-To: jjessel@amadeus.net To: gcc-gnats@gcc.gnu.org X-Send-Pr-Version:gnatsweb-2.9.3 (1.1.1.1.2.31) Subject: c++/5467: STL problem using multithreading X-SW-Source: 2002-01/txt/msg00835.txt.bz2 List-Id: >Number: 5467 >Category: c++ >Synopsis: STL problem using multithreading >Confidential: no >Severity: serious >Priority: medium >Responsible: unassigned >State: open >Class: sw-bug >Submitter-Id: net >Arrival-Date: Wed Jan 23 08:26:02 PST 2002 >Closed-Date: >Last-Modified: >Originator: Jean-Francois JESSEL (Amadeus SAS Development) >Release: unknown-1.0 >Organization: >Environment: HP-UX 11 (gcc 3.0.1) Sloaris 2.8 (gcc 2.95.3) >Description: Hello, I have isolated the following code (that I suppose to be thread safe) in order to reproduce a problem I have in a bigger program. I try to execute it in several threads. list mylist; string string_array[4]; string_array[0] = "string1"; string_array[1] = "string2"; string_array[2] = "string3"; string_array[3] = "string4"; for (int k=0; k<4; k++) { list::iterator aIt; for (aIt=mylist.begin(); aIt!=mylist.end(); ++aIt) if ((*aIt) == &(string_array[k])) cout << "item already in list" << endl; mylist.push_back(&(string_array[k])); } This works fine using aCC on HP-UX for example. But it always fails using gcc 2.95.3 or 3.0.1 on HP-UX or Solaris 2.8. Here is my compilation line: g++ -g -fexceptions simple.cpp -o simple -lpthread There is a core dump at run time and I have the following error messsage using gdb: #0 0xa7c4 in _ZNSt24__default_alloc_templateILb1ELi0EE8allocateEm (__n=17) at /tools/gcc/bin/../include/g++-v3/bits/stl_alloc.h:344 344 *__my_free_list = __result -> _M_free_list_link; It seems to occure in the "if" statement. Does anyone have an idea about this problem ? Thanks for your help. Jean-Francois. >How-To-Repeat: >Fix: >Release-Note: >Audit-Trail: >Unformatted: ----gnatsweb-attachment---- Content-Type: application/octet-stream; name="simple.cpp" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="simple.cpp" LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKgogKiBzaW1wbGUuYyAtLSBtdWx0aXRocmVhZGVkIFNUTCBleGFtcGxlCiAqICBj b21waWxlIHdpdGg6CiAqICAgZysrIC1nIHNpbXBsZS5jIC1vIHNpbXBsZSAtbHB0aHJlYWQgLVIg L3Vzci9saWIvbHdwCiAqCiAqLwoKLy8jaW5jbHVkZSA8VVBfT3B0aW9uUGFyc2VyLmg+CgojaWYg IWRlZmluZWQoX1JFRU5UUkFOVCkKIyAgZGVmaW5lIF9SRUVOVFJBTlQKI2VuZGlmCi8vIFJlbW92 ZSB0aGUgZm9sbG93aW5nIGRlZmluZSBtYWtlcyB0aGUgU1RMIHRvIGNyYXNoCi8vIyAgZGVmaW5l IF9QVEhSRUFEUwoKI2luY2x1ZGUgPHB0aHJlYWQuaD4KCiNpbmNsdWRlIDxzdHJpbmcuaD4JLyog Zm9yIHN0cmVycm9yKCkgKi8KCiNpbmNsdWRlIDxzdGRpby5oPgoKI2RlZmluZSBOVEhSRUFEUyA4 CgojZGVmaW5lIGVycmV4aXQoY29kZSxzdHIpICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAg ZnByaW50ZihzdGRlcnIsIiVzOiAlc1xuIiwoc3RyKSxzdHJlcnJvcihjb2RlKSk7IFwKICBleGl0 KDEpOwoKI2luY2x1ZGUgPHZlY3Rvci5oPgojaW5jbHVkZSA8bGlzdC5oPgojaW5jbHVkZSA8aW9z dHJlYW0uaD4KI2luY2x1ZGUgPHN0cmluZz4KIAp0eXBlZGVmIHN0cnVjdCB0dCB7CiAgY2hhciBi dWZbMTAwXTsKICBpbnQgIGk7Cn0gdHRfdDsKCmludCBjb250ZW50aW9uPTA7CmNoYXIgKiBBcmd2 W10gPSB7CiItaCIsCiItcyIsCiJzcmNzIiwKIi14IiwKIjEyIn07CmludCBBcmdjID0gc2l6ZW9m KEFyZ3YpIC8gc2l6ZW9mKCpBcmd2KTsKCnZvaWQgKnRocmVhZF9mdW5jdGlvbih2b2lkICphcmcp IHsKICBpbnQgY29udF9lcnIgPSAwOwogIGludCBteWlkPSooaW50ICopIGFyZzsKICBmb3IgKGlu dCBpPTA7IGk8MjAwOyBpKysgKSB7CiAgICB2ZWN0b3I8dHRfdD4gbXl2ZWN0MTsKICAgIGludCBt eWNvbnQgPSBjb250ZW50aW9uKys7CiAgICBmb3IgKGludCBqPTA7IGogPCAyMDAwOyBqKyspIHsK ICAgICAgdmVjdG9yPHR0X3Q+IG15dmVjdDI7CiAgICAgIHR0X3QgdjsKICAgICAgdi5pID0gajsK ICAgICAgbXl2ZWN0MS5wdXNoX2JhY2sodik7CiAgICAgIG15dmVjdDIucHVzaF9iYWNrKHYpOwog ICAgICBsaXN0PHN0ZDo6c3RyaW5nICo+IG15bGlzdDsKICAgICAgc3RkOjpzdHJpbmcgc3RyaW5n X2FycmF5WzRdOwogICAgICBzdHJpbmdfYXJyYXlbMF0gPSAidG90byI7CiAgICAgIHN0cmluZ19h cnJheVsxXSA9ICJ0aXRpIjsKICAgICAgc3RyaW5nX2FycmF5WzJdID0gInRhdGEiOwogICAgICBz dHJpbmdfYXJyYXlbM10gPSAidHV0dSI7CiAgICAgIGZvciAoaW50IGs9MDsgazw0OyBrKyspIHsK ICAgICAgCWlmIChteWxpc3Quc2l6ZSgpKSB7CiAgICAgIAkJbGlzdDxzdGQ6OnN0cmluZyAqPjo6 aXRlcmF0b3IgYUl0OwoJCWZvciAoYUl0PW15bGlzdC5iZWdpbigpOyBhSXQhPW15bGlzdC5lbmQo KTsgKythSXQpIHsKCQkJaWYgKCgqYUl0KSA9PSAmKHN0cmluZ19hcnJheVtrXSkpIHsKCQkJCWNv dXQgPDwgImVycm9yIiA8PCBlbmRsOwoJCQkJZXhpdCAoLTEpOwoJCQl9CgkJfQoJfQoJbXlsaXN0 LnB1c2hfYmFjaygmKHN0cmluZ19hcnJheVtrXSkpOwogICAgICB9CiAgICAgIAogICAgICAjaWYg MAogICAgICBPcHRpb25QYXJzZXIJX29wdFBhcnNlcigiU2ltcGxlVGVzdCIsICJDb3B5cmlnaHQg MjAwMiIpOwogICAgICBBcmdGbGFnIGFIRmxhZygiaCIsICJoZWxwIiwgImFIRmxhZyIpOwogICAg ICBBcmdTdHIgYUxvZ2ZpbGUoImwiLCAibG9nZmlsZSIsICJGVEFMb2FkLmh0bWwiLCAiTG9nIGZp bGUgbmFtZSIpOwogICAgICBBcmdTdHIgYVNvdXJjZWRpcigicyIsICJzb3VyY2VkaXIiLCAiLi8i LCAiIHNvdXJjZSBkaXJlY3RvcnkiKTsKICAgICAgQXJnU3RyIGFGVEFGaWxlKCJmIiwgInNvdXJj ZWZpbGUiLCAiRlRBX0lOLmRhdCIsICIgc291cmNlIGZpbGUgbmFtZSIpOwogICAgICBBcmdJbnQg YVN0YXRzRXZlcnkoIngiLCAic3RhdHNldmVyeSIsIDEwMDAsICJGcmVxdWVuY3kgb2Ygc3RhdGlz dGljcyIpOwoKICAgICAgX29wdFBhcnNlci5hZGRBcmcoYUhGbGFnKTsKICAgICAgX29wdFBhcnNl ci5hZGRBcmcoYUxvZ2ZpbGUpOwogICAgICBfb3B0UGFyc2VyLmFkZEFyZyhhU291cmNlZGlyKTsK ICAgICAgX29wdFBhcnNlci5hZGRBcmcoYUZUQUZpbGUpOwogICAgICBfb3B0UGFyc2VyLmFkZEFy ZyhhU3RhdHNFdmVyeSk7CgogICAgICBPUFNFcnJfdCBhT3BFcnJvciA9IF9vcHRQYXJzZXIuZGVj b2RlKEFyZ2MsIChjb25zdCBBTURfQ2hhciAqKilBcmd2KTsKICAgICAgI2VuZGlmCiAgICB9CiAg ICBpZiAoKG15Y29udCArIDEpICE9IGNvbnRlbnRpb24pIHsKICAgICAgIGNvbnRfZXJyKys7CiAg ICB9CiAgICBpZiAoaSAlIDEwID09IDApCiAgICB7CiAgICAgICBjb3V0IDw8ICdbJyA8PCBteWlk IDw8ICdAJyA8PCBpIDw8ICJdLiIgPDwgZmx1c2g7CiAgICAgICBpZiAobXlpZCA9PSAwKSBjb3V0 IDw8IGVuZGw7CiAgICB9CiAgfQogIGNvdXQgPDwgbXlpZCA8PCAiLmNvdW50X2Vycj0iIDw8IGNv bnRfZXJyIDw8IGVuZGwgPDwgZmx1c2g7CiAgcmV0dXJuIGFyZzsKfQoKLyoqKioqKioqIHRoaXMg aXMgdGhlIG1haW4gdGhyZWFkJ3MgY29kZSAqLwppbnQgbWFpbihpbnQgYXJnYyxjaGFyICphcmd2 W10pCnsKICBpbnQgd29ya2VyOwogIHB0aHJlYWRfdCB0aHJlYWRzW05USFJFQURTXTsgICAgICAg ICAgICAgICAgLyogaG9sZHMgdGhyZWFkIGluZm8gKi8KICBpbnQgaWRzW05USFJFQURTXTsgICAg ICAgICAgICAgICAgICAgICAgICAgIC8qIGhvbGRzIHRocmVhZCBhcmdzICovCiAgaW50IGVycmNv ZGU7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBob2xkcyBwdGhyZWFkIGVycm9y IGNvZGUgKi8KICB2b2lkICpzdGF0dXM7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAv KiBob2xkcyByZXR1cm4gY29kZSAqLwoKICBwdGhyZWFkX2F0dHJfdCB0YXR0cjsKICBpbnQgcmV0 ID0gcHRocmVhZF9hdHRyX2luaXQgKCZ0YXR0cik7CiAgcmV0ID0gcHRocmVhZF9hdHRyX3NldHNj b3BlKCZ0YXR0ciwgUFRIUkVBRF9TQ09QRV9TWVNURU0pOwogIGlmIChyZXQgIT0gMCkKICAgIGNv dXQgPDwgInB0aHJlYWRfYXR0cl9zZXRzY29wZSBmYWlsZWQiIDw8IGVuZGwgPDwgZmx1c2g7CiAg Lyogc2V0IHRoZSBzY2hlZHVsaW5nIHBvbGljeSB0byBTQ0hFRF9SUiAqLwogIC8vcmV0ID0gcHRo cmVhZF9hdHRyX3NldHNjaGVkcG9saWN5KCZ0YXR0ciwgU0NIRURfT1RIRVIpOwogIC8vcmV0ID0g cHRocmVhZF9hdHRyX3NldHNjaGVkcG9saWN5KCZ0YXR0ciwgU0NIRURfUlIpOwogIC8qCiAgcmV0 ID0gcHRocmVhZF9hdHRyX3NldHNjaGVkcG9saWN5KCZ0YXR0ciwgU0NIRURfUlIpOwogIGlmIChy ZXQgIT0gMCkKICAgIGNvdXQgPDwgInB0aHJlYWRfYXR0cl9zZXRzY2hlZHBvbGljeSBmYWlsZWQi IDw8IGVuZGwgPDwgZmx1c2g7CiAgKi8KCiAgLyogY3JlYXRlIHRoZSB0aHJlYWRzICovCiAgZm9y ICh3b3JrZXI9MDsgd29ya2VyPE5USFJFQURTOyB3b3JrZXIrKykgewogICAgaWRzW3dvcmtlcl09 d29ya2VyOwogICAgaWYgKGVycmNvZGU9cHRocmVhZF9jcmVhdGUoJnRocmVhZHNbd29ya2VyXSwv KiB0aHJlYWQgc3RydWN0ICAgICAgICAgICAgICovCgkJICAgICAgICZ0YXR0ciwgICAgICAgICAg ICAgICAgICAvKiBkZWZhdWx0IHRocmVhZCBhdHRyaWJ1dGVzICovCgkJICAgICAgIHRocmVhZF9m dW5jdGlvbiwgICAgICAgICAvKiBzdGFydCByb3V0aW5lICAgICAgICAgICAgICovCgkJICAgICAg ICZpZHNbd29ya2VyXSkpIHsgICAgICAgICAvKiBhcmcgdG8gcm91dGluZSAgICAgICAgICAgICov CiAgICAgIGVycmV4aXQoZXJyY29kZSwicHRocmVhZF9jcmVhdGUiKTsKICAgIH0KICB9CiAgLyog cmVhcCB0aGUgdGhyZWFkcyBhcyB0aGV5IGV4aXQgKi8KICBmb3IgKHdvcmtlcj0wOyB3b3JrZXI8 TlRIUkVBRFM7IHdvcmtlcisrKSB7CiAgICAvKiB3YWl0IGZvciB0aHJlYWQgdG8gdGVybWluYXRl ICovCiAgICBpZiAoZXJyY29kZT1wdGhyZWFkX2pvaW4odGhyZWFkc1t3b3JrZXJdLCBzdGF0aWNf Y2FzdDx2b2lkICoqPigmc3RhdHVzKSkpIHsgCiAgICAgIGVycmV4aXQoZXJyY29kZSwicHRocmVh ZF9qb2luIik7CiAgICB9CiAgICAvKiBjaGVjayB0aHJlYWQncyBleGl0IHN0YXR1cyBhbmQgcmVs ZWFzZSBpdHMgcmVzb3VyY2VzICovCiAgICBpZiAoKigoaW50ICopc3RhdHVzKSAhPSB3b3JrZXIp IHsKICAgICAgZnByaW50ZihzdGRlcnIsInRocmVhZCAlZCB0ZXJtaW5hdGVkIGFibm9ybWFsbHlc biIsd29ya2VyKTsKICAgICAgZXhpdCgxKTsKICAgIH0KICB9CiAgcmV0dXJuKDApOwp9CgovKiBF T0Ygc2ltcGxlLmMgKi8KCg==