This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |
Other format: | [Raw text] |
Tested under i686-linux, commited on mainline. In case of foreign threads, the field Self.Common.Task_Image_Len was kept uninitialized, leading to potential bad memory access when using Ada.Task_Identification.Name on a foreign thread. Test program, build with gprmake -Pprj bug1 Should run with no output: -- with P; procedure Bug1 is procedure C_Func; pragma Import (C, C_Func); begin C_Func; end Bug1; with Ada.Task_Identification; use Ada.Task_Identification; with Ada.Text_IO; use Ada.Text_IO; package body P is Base : constant String := "foreign thread"; procedure Ada_Routine is Img : constant String := Image (Current_Task); begin if Img'Length < Base'Length or else Img (1 .. Base'Length) /= Base then Put_Line ("failed"); end if; end Ada_Routine; end P; package P is procedure Ada_Routine; pragma Export (C, Ada_Routine); end P; -- project Prj is for Languages use ("ada", "c"); package Compiler is for Default_Switches ("c") use ("-D_REENTRANT"); end Compiler; end Prj; -- #include <pthread.h> extern void ada_routine (void); void *thread_body (void *param) { ada_routine (); return NULL; } void c_func (void) { pthread_t t; pthread_create(&t, NULL, thread_body, NULL); pthread_join (t, NULL); } -- 2005-02-09 Arnaud Charlet <charlet@adacore.com> * s-tporft.adb (Register_Foreign_Thread): Initialize Task_Image[_Len] fields for foreign threads.
Attachment:
difs.18
Description: Text document
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |