check_stack_depth

関数呼び出しが深くなるたび、各関数のローカル変数などを割り当てるためにスタック領域を消費する。再帰コールが大量に発生するなどの理由で、スタックを使い切ってしまうとSIGSEGVエラーになりプロセスが終了してしまうため、そうなる前にERRORを発生させてリカバリする。

stack_base_ptr

スタックの使用量を調べるための基準となるアドレス。stack_base_ptrには,PostgresMain()のローカル変数stack_baseのポインタがセットされる。

check_stack_depth()

stack_base_ptrとcheck_stack_depth()のローカル変数stack_top_locのポインタの差(stack_depth)を計算し、スタックの使用量を見積もる。stack_depthがmax_stack_depth_bytesを超えている場合,ERRORにする。
max_stack_depth_bytesは,max_stack_depthパラメータでkbyte単位で設定される。max_stack_depthのデフォルト値は2048なので,2Mbyteになる。