[SCore-users-jp] Re:set_new_handler について(再送)

kameyama @ pccluster.org kameyama @ pccluster.org
2006年 1月 11日 (水) 15:56:07 JST


亀山です.

In article <200601111438.BCC95309.KPPOI @ murata.co.jp> Hisaki Honjo <honjo @ murata.co.jp> wrotes:
> > > 通常のg++(2.96)ですと、set_new_handlerが有効に働き、
> > > メモリアロケーション(new)が失敗すると
> > > セットしたコールバック関数が呼び出されます。
> > > 
> > > ところが、mpic++で同一のソースをコンパイルすると
> > > コールバック関数が呼び出されず、Killされてしまいます。
> > 
> > redhat 7.3, memory 256 MB, swap 512 MB で g++ 2.96-110 でコンパイル
> > しましたが, kill されてしまいました.
> > 
> > 通常の場合でも set_new_handler() を呼び出すかどうかは微妙かもしれません.
> 
> 情報が不足していました。
> 更に「MALLOC_CHECK_=2」の環境変数をセットしないと
> g++でもset_new_handlerが有効になりません。

set しましたが, 変わりませんでした.

あと, PM の都合で mmap() のモードを malloc_set_state() で変更しています.
malloc() した memory は system に返さないようにして
mmap() を使用するようにしています.
このせいかもしれません.
MPI の初期化終ってから
    mallopt(M_MMAP_MAX, xxx)
で mmap の最大値を制限すれば new_handler を呼んでくれるかもしれません.

                       from Kameyama Toyohisa



SCore-users-jp メーリングリストの案内