Sorry again, that would cause the same problem again if setlocale, for some
reason,
is called between global::init and global::destroy.
New patch:
[kjetil@ttlush faust2]$ diff -u compiler/global.cpp~ compiler/global.cpp
--- compiler/global.cpp~ 2016-06-08 13:36:37.000000000 +0200
+++ compiler/global.cpp 2016-06-10 10:12:07.810479787 +0200
@@ -378,6 +378,9 @@
Typed::init();
gCurrentLocal = setlocale(LC_ALL, NULL);
+ if (gCurrentLocal != NULL)
+ gCurrentLocal = strdup(gCurrentLocal);
+
// Setup standard "C" local
// (workaround for a bug in bitcode generation :
http://lists.cs.uiuc.edu/pipermail/llvmbugs/2012-May/023530.html)
setlocale(LC_ALL, "C");
@@ -395,6 +398,7 @@
BasicTyped::cleanup();
DeclareVarInst::cleanup();
setlocale(LC_ALL, gCurrentLocal);
+ free(gCurrentLocal);
// Cleanup
CInstVisitor::cleanup();
On Fri, Jun 10, 2016 at 9:49 AM, Kjetil Matheussen <k.s.matheus...@gmail.com
> wrote:
> Oops, sorry, that would cause gCurrentLocal not to be set back to its
> original value.
> I guess this is good enough:
>
> [kjetil@ttlush faust2]$ diff -u compiler/global.cpp~ compiler/global.cpp
> --- compiler/global.cpp~ 2016-06-08 13:36:37.000000000 +0200
> +++ compiler/global.cpp 2016-06-10 09:48:30.753092340 +0200
> @@ -377,10 +377,10 @@
>
> Typed::init();
>
> - gCurrentLocal = setlocale(LC_ALL, NULL);
> + //gCurrentLocal = setlocale(LC_ALL, NULL);
> // Setup standard "C" local
> // (workaround for a bug in bitcode generation :
> http://lists.cs.uiuc.edu/pipermail/llvmbugs/2012-May/023530.html)
> - setlocale(LC_ALL, "C");
> + gCurrentLocal = setlocale(LC_ALL, "C");
>
> gAllocationCount = 0;
>
>
>
> On Fri, Jun 10, 2016 at 9:47 AM, Kjetil Matheussen <
> k.s.matheus...@gmail.com> wrote:
>
>> Hi,
>>
>> When compiling faust with -fsanitizer=address (asan), I get this crash:
>>
>> ==6397==ERROR: AddressSanitizer: heap-use-after-free on address
>> 0x612000434a40 at pc 0x7ffff70e074d bp 0x7fffffff9ed0 sp 0x7fffffff9680
>> READ of size 3 at 0x612000434a40 thread T0
>> #0 0x7ffff70e074c in __interceptor_setlocale
>> ../../.././libsanitizer/sanitizer_common/sanitizer_common_interceptors.inc:2264
>> #1 0xe70244 in global::~global()
>> /home/kjetil/faust2/compiler/global.cpp:397
>> #2 0xe711a9 in global::destroy()
>> /home/kjetil/faust2/compiler/global.cpp:415
>>
>> ...
>>
>> 0x612000434a40 is located 0 bytes inside of 271-byte region
>> [0x612000434a40,0x612000434b4f)
>> freed by thread T0 here:
>> #0 0x7ffff7124d7a in __interceptor_free
>> ../../.././libsanitizer/asan/asan_malloc_linux.cc:28
>> #1 0x3b4942c155 in __GI_setlocale (/lib64/libc.so.6+0x3b4942c155)
>> #2 0x7ffff70e065b in __interceptor_setlocale
>> ../../.././libsanitizer/sanitizer_common/sanitizer_common_interceptors.inc:2265
>> #3 0xe6ff94 in global::init()
>> /home/kjetil/faust2/compiler/global.cpp:383
>>
>>
>> Seems like a subsequent call to setlocale frees the previous result from
>> it.
>> This patch seems like the easiest fix:
>>
>>
>> [kjetil@ttlush faust2]$ diff -u compiler/global.cpp~ compiler/global.cpp
>> --- compiler/global.cpp~ 2016-06-08 13:36:37.000000000 +0200
>> +++ compiler/global.cpp 2016-06-10 09:44:05.770369357 +0200
>> @@ -380,7 +380,7 @@
>> gCurrentLocal = setlocale(LC_ALL, NULL);
>> // Setup standard "C" local
>> // (workaround for a bug in bitcode generation :
>> http://lists.cs.uiuc.edu/pipermail/llvmbugs/2012-May/023530.html)
>> - setlocale(LC_ALL, "C");
>> + gCurrentLocal = setlocale(LC_ALL, "C");
>>
>> gAllocationCount = 0;
>>
>>
>
------------------------------------------------------------------------------
What NetFlow Analyzer can do for you? Monitors network bandwidth and traffic
patterns at an interface-level. Reveals which users, apps, and protocols are
consuming the most bandwidth. Provides multi-vendor support for NetFlow,
J-Flow, sFlow and other flows. Make informed decisions using capacity
planning reports. https://ad.doubleclick.net/ddm/clk/305295220;132659582;e
_______________________________________________
Faudiostream-devel mailing list
Faudiostream-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/faudiostream-devel