2015年05月20日
Visual C++ 2013でWin2000互換モードで実行するとクラッシュする嫌がらせの、実証コード
何の嫌がらせかわからないけど、VC++2013 でコンパイルすると Windows 2000互換モードで実行したときにクラッシュする、最小の実証コードが判明しました!
並列パターン ライブラリ (PPL)
というのを使うと Windows 7などで Windows 2000互換モードで実行したときにアプリケーションがクラッシュします
|。・ω・) 訳がわからないよ!
Media Player Classic もソース見たら「parallel_for」があったので間違いないです・ω・
Visual Studio 2013 に互換モードに関する欠陥判明!
同じ原因でクラッシュするのが判明しているアプリ
iTunes 12.x
Media Player Classic
東方深秘録
IntelQuickSyncDecoder
#include "stdafx.h" #include <ppl.h> typedef void* (*Tmemcpy)(void*, const void*, size_t); static void* mt_copy(void* d, const void* s, size_t size, Tmemcpy memcpyFunc) { size_t blockSize = (size / 2) & ~31; // Make size a multiple of 32 bytes const size_t offsets[] = { 0, blockSize, size }; Concurrency::parallel_for(0, 2, [d, s, &offsets, memcpyFunc](int i) { memcpyFunc((char*)d + offsets[i], (const char*)s + offsets[i], offsets[i + 1] - offsets[i]); }); return d; } int APIENTRY _tWinMain(_In_ HINSTANCE hInstance, _In_opt_ HINSTANCE hPrevInstance, _In_ LPTSTR lpCmdLine, _In_ int nCmdShow) { char test1[512]; mt_copy(test1, "xxx",4, memcpy); return (int) 0; } |
並列パターン ライブラリ (PPL)
というのを使うと Windows 7などで Windows 2000互換モードで実行したときにアプリケーションがクラッシュします
|。・ω・) 訳がわからないよ!
Media Player Classic もソース見たら「parallel_for」があったので間違いないです・ω・
Visual Studio 2013 に互換モードに関する欠陥判明!
同じ原因でクラッシュするのが判明しているアプリ
iTunes 12.x
Media Player Classic
東方深秘録
IntelQuickSyncDecoder