μ΄κ²μ μλ https://github.com/dahlia/libsass-python/pull/149 μμ μ΅λλ€.
λλ μ νν _μ_ μ΄λ° μΌμ΄ μΌμ΄λλμ§ λ¨Έλ¦¬λ₯Ό κ°μΈλ λ° μ΄λ €μμ κ²ͺκ³ μμ§λ§ μ§κΈκΉμ§ λ΄κ° κ°μ§ κ²μ κ²μν κ²μ λλ€ :)
μ΄ μ»€λ°μ΄ λ΄κ° λ³΄κ³ μλ λ¬Έμ λ₯Ό μΌμΌν€λ κ² κ°μ΅λλ€: https://github.com/sass/libsass/commit/527f3a8 (#2025)
μ΄μ λ²μ (f8cad4e)μ νμΈνλ©΄ μ±κ³΅ν κ² κ°μ΅λλ€.
λ μ¬μ΄ κ²½μ° μ¬κΈ°μμ μ½λλ₯Ό λ³Ό μ μμ΅λλ€. https://github.com/asottile/libsass/commit/f40ae24025234b73ca86adece62dec0e35884eb1
λ©μΈ.cpp
#include <sass/context.h>
#include <iostream>
int main() {
std::cout << "Making data context" << std::endl;
struct Sass_Data_Context* context = sass_make_data_context(sass_copy_c_string(""));
std::cout << "Compiling data context" << std::endl;
sass_compile_data_context(context);
std::cout << "Getting output context" << std::endl;
struct Sass_Context* ctx = sass_data_context_get_context(context);
std::cout << "Printing error status" << std::endl;
std::cout << sass_context_get_error_status(ctx) << std::endl;
std::cout << "Printing error message" << std::endl;
std::cout << sass_context_get_error_message(ctx) << std::endl;
sass_delete_data_context(context);
return 0;
}
test.bat
"D:\Programs\VS2015\VC\BIN\amd64\cl.exe" ^
/I.\include -ID:\Programs\VS2015\VC\INCLUDE ^
/c /nologo /W3 /WX- /GL /DNDEBUG -O2 /Oi /Zi /EHsc /MT ^
src/*.c
"D:\Programs\VS2015\VC\BIN\amd64\cl.exe" ^
/I.\include ^
"-ID:\Programs\VS2015\VC\INCLUDE" ^
"-ID:\Programs\VS2015\VC\ATLMFC\INCLUDE" ^
"-IC:\Program Files (x86)\Windows Kits\10\include\10.0.10240.0\ucrt" ^
"-IC:\Program Files (x86)\Windows Kits\NETFXSDK\4.6.1\include\um" ^
"-IC:\Program Files (x86)\Windows Kits\8.1\include\\shared" ^
"-IC:\Program Files (x86)\Windows Kits\8.1\include\\um" ^
"-IC:\Program Files (x86)\Windows Kits\8.1\include\\winrt" ^
/c /nologo /W3 /WX- /GL /DNDEBUG -O2 /Oi /Zi /EHsc /MT ^
./main.cpp src/*.cpp
"D:\Programs\VS2015\VC\BIN\amd64\link.exe" ^
"-LIBPATH:D:\Programs\VS2015\VC\LIB\amd64" ^
"-LIBPATH:D:\Programs\VS2015\VC\ATLMFC\LIB\amd64" ^
"-LIBPATH:C:\Program Files (x86)\Windows Kits\10\lib\10.0.10240.0\ucrt\x64" ^
"-LIBPATH:C:\Program Files (x86)\Windows Kits\NETFXSDK\4.6.1\lib\um\x64" ^
"-LIBPATH:C:\Program Files (x86)\Windows Kits\8.1\lib\winv6.3\um\x64" ^
"-INCREMENTAL:NO" "-OUT:main.exe" "-Debug" "-nologo" "-LTCG" ^
*.obj
main.exe
C:\Users\Anthony\Desktop\git\libsass-python\libsass>"D:\Programs\VS2015\VC\BIN\amd64\cl.exe" /I.\include -ID:\Programs\VS2015\VC\INCLUDE /c /nologo /W3 /WX- /GL /DNDEBUG -O2 /Oi /Zi /EHsc /MT src/*.c
c99func.c
cencode.c
C:\Users\Anthony\Desktop\git\libsass-python\libsass>"D:\Programs\VS2015\VC\BIN\amd64\cl.exe" /I.\include "-ID:\Programs\VS2015\VC\INCLUDE" "-ID:\Programs\VS2015\VC\ATLMFC\INCLUDE" "-IC:\Program Files (x86)\Windows Kits\10\include\10.0.10240.0\ucrt" "-IC:\Program Files (x86)\Windows Kits\NETFXSDK\4.6.1\include\um" "-IC:\Program Files (x86)\Windows Kits\8.1\include\\shared" "-IC:\Program Files (x86)\Windows Kits\8.1\include\\um" "-IC:\Program Files (x86)\Windows Kits\8.1\include\\winrt" /c /nologo /W3 /WX- /GL /DNDEBUG -O2 /Oi /Zi /EHsc /MT ./main.cpp src/*.cpp
main.cpp
ast.cpp
base64vlq.cpp
bind.cpp
src/bind.cpp(175): warning C4267: 'initializing': conversion from 'size_t' to 'int', possible loss of data
color_maps.cpp
constants.cpp
context.cpp
cssize.cpp
emitter.cpp
environment.cpp
error_handling.cpp
eval.cpp
expand.cpp
extend.cpp
file.cpp
functions.cpp
inspect.cpp
json.cpp
lexer.cpp
listize.cpp
Compiling...
memory_manager.cpp
node.cpp
output.cpp
parser.cpp
plugins.cpp
position.cpp
prelexer.cpp
remove_placeholders.cpp
sass.cpp
sass2scss.cpp
sass_context.cpp
sass_functions.cpp
sass_util.cpp
sass_values.cpp
source_map.cpp
to_c.cpp
to_value.cpp
units.cpp
utf8_string.cpp
util.cpp
Compiling...
values.cpp
C:\Users\Anthony\Desktop\git\libsass-python\libsass>"D:\Programs\VS2015\VC\BIN\amd64\link.exe" "-LIBPATH:D:\Programs\VS2015\VC\LIB\amd64" "-LIBPATH:D:\Programs\VS2015\VC\ATLMFC\LIB\amd64" "-LIBPATH:C:\Program Files (x86)\Windows Kits\10\lib\10.0.10240.0\ucrt\x64" "-LIBPATH:C:\Program Files (x86)\Windows Kits\NETFXSDK\4.6.1\lib\um\x64" "-LIBPATH:C:\Program Files (x86)\Windows Kits\8.1\lib\winv6.3\um\x64" "-INCREMENTAL:NO" "-OUT:main.exe" "-Debug" "-nologo" "-LTCG" *.obj
Generating code
Finished generating code
C:\Users\Anthony\Desktop\git\libsass-python\libsass>main.exe
Making data context
Compiling data context
Getting output context
Printing error status
3
Printing error message
Internal Error: Data context created with empty source string
C:\Users\Anthony\Desktop\git\libsass-python\libsass>"D:\Programs\VS2015\VC\BIN\amd64\cl.exe" /I.\include -ID:\Programs\VS2015\VC\INCLUDE /c /nologo /W3 /WX- /GL /DNDEBUG -O2 /Oi /Zi /EHsc /MT src/*.c
c99func.c
cencode.c
C:\Users\Anthony\Desktop\git\libsass-python\libsass>"D:\Programs\VS2015\VC\BIN\amd64\cl.exe" /I.\include "-ID:\Programs\VS2015\VC\INCLUDE" "-ID:\Programs\VS2015\VC\ATLMFC\INCLUDE" "-IC:\Program Files (x86)\Windows Kits\10\include\10.0.10240.0\ucrt" "-IC:\Program Files (x86)\Windows Kits\NETFXSDK\4.6.1\include\um" "-IC:\Program Files (x86)\Windows Kits\8.1\include\\shared" "-IC:\Program Files (x86)\Windows Kits\8.1\include\\um" "-IC:\Program Files (x86)\Windows Kits\8.1\include\\winrt" /c /nologo /W3 /WX- /GL /DNDEBUG -O2 /Oi /Zi /EHsc /MT ./main.cpp src/*.cpp
main.cpp
ast.cpp
base64vlq.cpp
bind.cpp
src/bind.cpp(175): warning C4267: 'initializing': conversion from 'size_t' to 'int', possible loss of data
color_maps.cpp
constants.cpp
context.cpp
cssize.cpp
emitter.cpp
environment.cpp
error_handling.cpp
eval.cpp
expand.cpp
extend.cpp
file.cpp
functions.cpp
inspect.cpp
json.cpp
lexer.cpp
listize.cpp
Compiling...
memory_manager.cpp
node.cpp
output.cpp
parser.cpp
plugins.cpp
position.cpp
prelexer.cpp
remove_placeholders.cpp
sass.cpp
sass2scss.cpp
sass_context.cpp
sass_functions.cpp
sass_util.cpp
sass_values.cpp
source_map.cpp
to_c.cpp
to_value.cpp
units.cpp
utf8_string.cpp
util.cpp
Compiling...
values.cpp
C:\Users\Anthony\Desktop\git\libsass-python\libsass>"D:\Programs\VS2015\VC\BIN\amd64\link.exe" "-LIBPATH:D:\Programs\VS2015\VC\LIB\amd64" "-LIBPATH:D:\Programs\VS2015\VC\ATLMFC\LIB\amd64" "-LIBPATH:C:\Program Files (x86)\Windows Kits\10\lib\10.0.10240.0\ucrt\x64" "-LIBPATH:C:\Program Files (x86)\Windows Kits\NETFXSDK\4.6.1\lib\um\x64" "-LIBPATH:C:\Program Files (x86)\Windows Kits\8.1\lib\winv6.3\um\x64" "-INCREMENTAL:NO" "-OUT:main.exe" "-Debug" "-nologo" "-LTCG" *.obj
Generating code
Finished generating code
C:\Users\Anthony\Desktop\git\libsass-python\libsass>main.exe
Making data context
μ€ν¨ μ λλ²κ±°λ₯Ό μ°κ²°νλ©΄ λ€μ λ©μμ§κ° νμλ©λλ€.
Unhandled exception at 0x00007FF77A8F8814 in main.exe: Stack cookie instrumentation code detected a stack-based buffer overrun.
https://github.com/sass/libsass/blob/527f3a8/src/sass_context.cpp#L143 μμ μ€λ¨μ μ μμ ν©λλ€.
첫 λ²μ§Έ :λ°μ: ν΄λΉ λ²κ·Έ λ³΄κ³ μμ λν΄ μ°λ¦¬κ° μνλ λλ‘ κ±°μ κ·Έ μ리μ μμ΅λλ€. λ€μμ μκ°μ λ΄μ΄ D:\Programs
λ₯Ό ProgramFiles(x86)
λ‘ κ΅μ²΄νκ³ Visual Studioλ₯Ό νμ€ κ²½λ‘( Microsoft Visual Studio 12.0
AFAIK)μ μ€μΉν΄ μ£Όμλ©΄ λ€μ λ²κ·Έ μ κ³ λμμΌλ‘ 곡μ μ§λͺ
νκ² μ΅λλ€. λ
:μλ:
μ΄λ―Έ λ¦μ μκ°μ΄μ§λ§ μ²μ²ν μ΄ν΄λ³΄κ² μ΅λλ€...
/GL
(νλ‘κ·Έλ¨ μ΅μ ν)λ₯Ό μ κ±°νλ©΄ λ¬Έμ κ° ν΄κ²°λλ κ² κ°μ΅λλ€...
λͺ
νννκΈ° μν΄ μ΅μ νκ° νμ±νλλ©΄ segfaultκ° λ°μν©λλ€ .. μ’μ, λμΌν κ²μ μ°Έμ‘°νμμμ€.
μλ‘ μΆκ°λ μλμ ν¨κ» μ 곡λλ€κ³ λ§μνμ
¨κΈ° λλ¬Έμ μ€ν ν΄μ λ¬Έμ κ° μμ¬λ©λλ€.
μ΄κ²μ μ’
μ’
μ»΄νμΌλ¬ μ΅μ
κ³Ό κ΄λ ¨μ΄ μμ§λ§ λͺ
νν κ²μ λ§νκΈ°μλ λ무 μ΄λ₯΄λ€.
νκ³ λ³΄κ³ ν©λλ€. SSDμ 곡κ°μ΄ λΆμ‘±νμ¬ VMμ κ°λν΄μΌ ν κ²μ λλ€.
/GR
λ³κ²½νλ©΄ λ¬Έμ κ° ν΄κ²°λ©λλ€! -- setuptools(python)μ μ λ¬νλ νλκ·Έμμ μμ ν μ μλ€κ³ μκ°ν©λλ€.
ν κ³ λ§μ!
ν ... μ¬μ μνκΈ° μ΄λ €μ΄ μΌλΆ κΈ°λ³Έκ° λλ¬Έμ μννκΈ°κ° μ½κ° μ΄λ ΅μ΅λλ€. μ΄ μ»€λ°μ΄ /GL
μ€λ¨νλ μ΄μ λ₯Ό μ μ μμ΅λκΉ?
μ, λ©λͺ¨λ¦¬κ° μλ§λ λ μ€ν¬λ¨λΈλκΈ° λλ¬Έμ λκΈλ§ ν¬μΈν°λ λ²νΌ μ€λ²λ° λ±μ ν΅ν΄ μΈκ·Έν΄νΈλ₯Ό μ»λ κ²μ΄ λ μ¬μΈ κ²μ λλ€. μ²μμΌλ‘. μμ μ΄ μ§ν μ€μ΄λ©° PRμ μ‘°κΈ λ μΈ κ²μ λλ€.
<3 λΉμ μ μ΅κ³ μ λλ€
μ€μ€λ‘ μκ°ν΄λ³΄κ³ μΆλ€λ©΄ λ€μκ³Ό κ°μ λ¬Έμ κ° μμ΅λλ€.
sass_copy_c_string(msg_stream.str().c_str())
μ μλ μμ μ¬νμ https://github.com/sass/libsass/pull/2048 μ μ°Έμ‘°
μ€λ μ μ μμ±ν μΌλΆ μ½λμμ μ΄μ μ μ¬ν κ²μ κΈ°μ΅ν©λλ€. νμ€μ΄ λ¬Έμμ΄ μμ μμ§μ λν΄ λ³΄νΈλμ§λ§ μλ§λ κ·Έλ μ§ μμ κ²μ΄λΌκ³ μκ°νμ΅λλ€.
μ΄ ν¨μΉλ μ½λλ₯Ό μ±κ³΅μν€λ κ² κ°μ΅λλ€.
diff --git a/src/sass_context.cpp b/src/sass_context.cpp
index e3f34af..9105866 100644
--- a/src/sass_context.cpp
+++ b/src/sass_context.cpp
@@ -140,7 +140,8 @@ extern "C" {
json_append_member(json_err, "message", json_mkstring(e.what()));
json_append_member(json_err, "formatted", json_mkstring(msg_stream.str().c_str()));
try { c_ctx->error_json = json_stringify(json_err, " "); } catch(...) {}
- c_ctx->error_message = sass_copy_c_string(msg_stream.str().c_str());
+ std::string s = msg_stream.str();
+ c_ctx->error_message = sass_copy_c_string(s.c_str());
c_ctx->error_text = sass_copy_c_string(e.what());
c_ctx->error_status = 3;
c_ctx->output_string = 0;
μ€ μ€μ, μ°λ¦¬λ κ°μ κ²°λ‘ μ λλ¬νμ΅λλ€ :D
μ, μ΄μ μ λ©λͺ¨λ¦¬ κ΄λ¦¬μ κ΄λ ¨νμ¬ μλ©Έμκ° κΈ°λ³Έμ μΌλ‘ λμΌν λ¬Έμ (λμΌν μ»΄νμΌλ¬)λ‘ μ΄μ΄μ§λ μ΄μν μμλ‘ νΈμΆλλ κ²μ 보μμ΅λλ€.
μ, μ΄μ κΈ°μ΅ν©λλ€. μ΄κ²μ΄ λ°λ‘ μ κ°μ²΄ ν λΉμ μν SASS_MEMORY_NEW
맀ν¬λ‘κ° μλ μ΄μ (AFAIR)μ
λλ€. μ΄κ²μ΄ μ΄ PRμ΄μμ΅λλ€. https://github.com/sass/libsass/pull/1462 ... 100% νμ€νμ§λ μμ§λ§ λ΄ μ§κ°μ λ λ€ λμΌν κ³΅ν΅ λ£¨νΈλ₯Ό κ°μ§κ³ μλ€κ³ λ§ν©λλ€.
μ μ‘μμ μ¬λ¬λΆ
2016λ
4μ 25μΌ μ€μ 9μ 29λΆμ "Marcel Greter" [email protected]μ΄ λ€μκ³Ό κ°μ΄ μΌμ΅λλ€.
νμ #2046 https://github.com/sass/libsass/issues/2046 ν΅ν΄ #2048
https://github.com/sass/libsass/pull/2048.β
μ΄ μ€λ λμ κ°μ νκΈ° λλ¬Έμ μ΄ λ©μμ§λ₯Ό λ°κ³ μμ΅λλ€.
μ΄ μ΄λ©μΌμ μ§μ λ΅μ₯νκ±°λ GitHubμμ νμΈνμΈμ.
https://github.com/sass/libsass/issues/2046#event -639249983