確認ありがとうございました。よく考えたら本家とここは繋がっているのですね、二重投稿してしまい、失礼しました。
なぜ setImmediate( ) をかませば改善するのか、の点に疑問を残しながらですが、ben 
さんのお陰であっという間に解決です!あとは自分でソースを読めばなんとかなりそうです。

2017年6月19日月曜日 20時09分56秒 UTC+9 Yosuke FURUKAWA:
>
>
> ちょっとまだ不明点が多いのでなんともなのですが、いきなりPromiseをrejectした(例外を投げた)時のタイミングで、SIGSEGVが起きるという話ですね。
> 一旦 ben が見てくれているようなので、そのままフォローしていただいたほうが早そうですね。
>
> *https://github.com/nodejs/node/issues/13782 
> <https://github.com/nodejs/node/issues/13782>*
>
>
>
> 2017年6月19日月曜日 16時11分56秒 UTC+9 Yoshitaka Sakamoto:
>>
>> はじめまして、坂本と申します。
>> 開発しているアプリケーションで Node が不可思議な動きをしたので、もしご教示いただけることがあればと思い、投稿しました。
>>
>> 環境:
>> AWS 上で構築したサーバーです。
>> (CPU) Intel(R) Xeon(R) CPU E5-2666 v3 @ 2.90GHz
>> (OS) Ubuntu 16.04.2 LTS
>> (Node) v6.11.0
>>
>> 現象:
>> 以下のソース(1)で SIGSEGV エラーが発生し、プロセスが停止する。(2)、(3)、(4) では問題ない、(5) では SIGSEGV 発生。
>> 実行オプションには
>>     --max_old_space_size=1024 --expose-gc 
>> がついており、process 自体は forever にて fork した child_process で動いています。
>>
>> (*) catch 部分はすべて同じなので、 (2) 以降は省略しています。
>> この部分だけを単独実行しても再現はしない模様です。
>>
>> (1)
>> var when = Promise.resolve();
>> when = when.then(function() {
>>   return new Promise(function(rsl, rej) {
>>      rej('THROW ERROR');  // => SIGSEGV
>>   });
>> });
>> when['catch'](function(e){
>>   console.log(e);
>> });
>>
>> (2)
>> var when = Promise.resolve();
>> when = when.then(function() {
>>   return new Promise(function(rsl, rej) {
>>      rsl();  // => OK
>>   });
>> });
>>
>> (3)
>> var when = Promise.resolve();
>> when = when.then(function() {
>>   return new Promise(function(rsl, rej) {
>>      process.nextTick(rej);  // => OK
>>   });
>> });
>>
>> (4)
>> var when = Promise.resolve();
>> when = when.then(function() {
>>   return new Promise(function(rsl, rej) {
>>      setImmediate(rej);  // => OK
>>   });
>> });
>>
>> (5)
>> var when = Promise.resolve();
>> when = when.then(function() {
>>   return new Promise(function(rsl, rej) {
>>      throw 'THROW ERROR' // => SIGSEGV
>>   });
>> });
>>
>> 同期的なエラーの throw に対して発生する、ということは現象的にわかっているのですが、
>> 発生するようになる条件がわからない状況です。
>> よろしくお願いします。
>>
>>

-- 

--- 
このメールは Google グループのグループ「Node.js 日本ユーザグループ」の登録者に送られています。
このグループから退会し、グループからのメールの配信を停止するには nodejs_jp+unsubscr...@googlegroups.com 
にメールを送信してください。
その他のオプションについては、https://groups.google.com/d/optout にアクセスしてください。

Reply via email to