teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

1

cygwinアプリのヒープサイズ変更方法と,ネットで調べたdll起因のエラー解決としてrebaseコマンドを使う例の紹介

2021/12/23 13:10

投稿

ujimushi_sradjp
ujimushi_sradjp

スコア2192

answer CHANGED
@@ -69,4 +69,32 @@
69
69
 
70
70
  ### haloのインストール
71
71
 
72
- * cygwinのターミナル上から`pip3 install halo`
72
+ * cygwinのターミナル上から`pip3 install halo`
73
+
74
+ # 2021/12/23 22:00調べた情報の追加
75
+ ベストアンサー選んでいただいた後で申し訳ありませんが後で分かった内容を追加しておきます。
76
+
77
+ ## cygwin上アプリのヒープサイズの変更方法について
78
+
79
+ [cygwin公式サイトのヒープサイズ変更方法](https://cygwin.com/cygwin-ug-net/setup-maxmem.html)によると,
80
+ `peflags`コマンドでcygwinが使うヒープサイズを変更できるようです。
81
+ 64bit版cygwinの場合は最大2048MBだとか。「0」で設定されている場合はデフォルトの512MBだそうです。
82
+
83
+ 数字の単位は「MB」だそうです。
84
+
85
+ ```bash
86
+ peflags --cygwin-heap=2048 /bin/python
87
+ # 上と同じ
88
+ peflags -z2048 /bin/python
89
+ ```
90
+
91
+ ## cygwin1.dllとリンクしているプログラムのエラーについて
92
+
93
+ 今回の質問とよく似ているエラーがちょくちょくネットで報告されているようです。
94
+
95
+ 少し前の例ですが,[https://tech.guitarrapc.com/entry/2014/01/31/071034](https://tech.guitarrapc.com/entry/2014/01/31/071034)のような
96
+ 例もあるようです。
97
+
98
+ `cygwin1.dll`でメモリをたくさん確保するので,アドレスがかぶってメモリが確保できないことがあるようです。
99
+ この中の対策の一つとして`rebase`コマンドを使ってdllのメモリ配置を重ならないように指定する例が挙げられていますが,
100
+ 私もちゃんと理解できるいる訳ではありません。