Skip to content

hh_server crash in 3.27.0 with unioned shape types #8249

@ssandler

Description

@ssandler

HHVM Version

hhvm --version
HipHop VM 3.27.0 (rel)
Compiler: remotes/origin/3.27.0-slack-0-g4a23a4ee3a4a2386601b2069b38bd6a5f2962dc4
Repo schema: 96c7df8d1476364c2cc8deb30615276f9ad8dc29

This is the 3.27.0 public release, except with this #8248 cherry-picked in.

Operating System and Version

Ubuntu 16.04 and Mac OSX 10.13.5.

Standalone code, or other way to reproduce the problem

hh_server --check . on our codebase

Unfortunately can't repro on a smaller codebase (see second comment, made a small repo that reproduces the crash). The crash happens under 3.27.0 but not 3.25.3 or 3.26.3 on the same box and with the same code. Reproduced both on Linux and Mac.

Actual result

hh_server crashes 100% of the time with a trace like this:

[2018-06-30 14:57:57.005] Initializing Server (This might take some time)
[2018-06-30 14:57:57.005] Init id: LgKUBfPwpu
[2018-06-30 14:57:57.005] Initing with approach: Local_config_mini_state_disabled
[2018-06-30 14:57:57.005] Begin Indexing
[2018-06-30 14:57:57.005] Indexing: 0.000003
[2018-06-30 14:57:57.005] Begin Parsing
[2018-06-30 14:58:02.218] Heap size: 89993856
[2018-06-30 14:58:02.218] Parsing: 4.213433
[2018-06-30 14:58:02.245] Updating deps: 0.026634
[2018-06-30 14:58:02.245] Begin Naming
[2018-06-30 14:58:02.442] Heap size: 96337920
[2018-06-30 14:58:02.442] Naming: 0.197043
[2018-06-30 14:58:02.847] Updating 8707 search files:: 0.386388
[2018-06-30 14:58:02.847] Done updating search files
[2018-06-30 14:58:02.852] Dependency table load factor: 0 / 1048576 (0.00)
[2018-06-30 14:58:02.854] Hashtable load factor: 134597 / 1048576 (0.13) with 134597 nonempty slots
[2018-06-30 14:58:02.854] Waiting for daemon(s) to be ready...
[2018-06-30 14:58:02.854] Server is partially ready
[2018-06-30 14:58:02.854] Took 4.849702 seconds.
******************************************
[2018-06-30 14:58:02.854] Check kind: Full_check
[2018-06-30 14:58:02.854] Files to recompute: 0
[2018-06-30 14:58:02.854] Begin Parsing 0 files
[2018-06-30 14:58:02.855] Heap size: 103275840
[2018-06-30 14:58:02.855] Parsing 0 files: 0.000529
[2018-06-30 14:58:02.855] Begin Updating deps
[2018-06-30 14:58:02.855] Updating deps: 0.000023
[2018-06-30 14:58:02.855] Begin Naming
[2018-06-30 14:58:02.855] Naming: 0.000022
[2018-06-30 14:58:02.855] Heap size: 103275840
[2018-06-30 14:58:02.855] Determining changes: 0.000440
[2018-06-30 14:58:02.855] Begin Type-decl 0 files
[2018-06-30 14:58:02.856] Heap size: 103275840
[2018-06-30 14:58:02.856] Type-decl 0 files: 0.000452
[2018-06-30 14:58:02.892] Begin Type-check 8707 files
Exception: Stack overflow
Potential backtrace:
Raised by primitive operation at file "typing/typing_continuations.ml", line 17, characters 16-34
Called from file "pervasives.ml", line 289, characters 22-31
Called from file "pervasives.ml", line 289, characters 22-31
Called from file "pervasives.ml", line 289, characters 22-31
Called from file "pervasives.ml", line 289, characters 22-31
Called from file "pervasives.ml", line 289, characters 22-31
Called from file "pervasives.ml", line 289, characters 22-31
Called from file "pervasives.ml", line 289, characters 22-31
Called from file "pervasives.ml", line 289, characters 22-31
Called from file "pervasives.ml", line 289, characters 22-31
Called from file "pervasives.ml", line 289, characters 22-31
Called from file "pervasives.ml", line 289, characters 22-31
Called from file "pervasives.ml", line 289, characters 22-31
Called from file "pervasives.ml", line 289, characters 22-31
Called from file "pervasives.ml", line 289, characters 22-31
Called from file "pervasives.ml", line 289, characters 22-31
Called from file "pervasives.ml", line 289, characters 22-31
Called from file "pervasives.ml", line 289, characters 22-31
Called from file "pervasives.ml", line 289, characters 22-31
Called from file "pervasives.ml", line 289, characters 22-31
Called from file "pervasives.ml", line 289, characters 22-31
Called from file "pervasives.ml", line 289, characters 22-31
Called from file "pervasives.ml", line 289, characters 22-31
Called from file "pervasives.ml", line 289, characters 22-31
Called from file "pervasives.ml", line 289, characters 22-31
Called from file "pervasives.ml", line 289, characters 22-31
Called from file "pervasives.ml", line 289, characters 22-31
Called from file "pervasives.ml", line 289, characters 22-31
Called from file "pervasives.ml", line 289, characters 22-31
Called from file "typing/typing.ml", line 2996, characters 30-42
Called from file "typing/typing.ml", line 5300, characters 20-53
Called from file "typing/typing.ml", line 5148, characters 24-52
Called from file "typing/typing.ml", line 5164, characters 21-57
Called from file "typing/typing.ml", line 5059, characters 27-95
Called from file "typing/typing.ml", line 6716, characters 15-53
Called from file "errors/errors.ml", line 106, characters 17-22
Called from file "typing/typing.ml", line 6714, characters 41-252
Called from file "typing/typing.ml" (inlined), line 1297, characters 6-105
Called from file "typing/typing.ml", line 1862, characters 24-134
Called from file "typing/typing.ml", line 1125, characters 4-157
Called from file "typing/typing.ml", line 1107, characters 2-164
Called from file "typing/typing.ml", line 609, characters 23-33
Called from file "utils/hh_core.ml", line 57, characters 22-30
Called from file "utils/hh_core.ml", line 67, characters 12-36
Called from file "utils/hh_core.ml", line 67, characters 12-36
Called from file "utils/hh_core.ml", line 67, characters 12-36
Called from file "utils/hh_core.ml", line 67, characters 12-36
Called from file "typing/typing.ml", line 487, characters 18-47
Called from file "typing/typing_env.ml", line 544, characters 20-25
Called from file "typing/typing.ml", line 447, characters 20-55
Called from file "typing/typing.ml", line 406, characters 17-1023
Called from file "typing/typing_check_service.ml", line 33, characters 23-49
Called from file "typing/typing_check_service.ml" (inlined), line 78, characters 10-33
Called from file "typing/typing_check_service.ml", line 87, characters 14-39
Called from file "set.ml", line 339, characters 38-41
Called from file "set.ml", line 339, characters 28-36
Called from file "set.ml", line 339, characters 28-36
Called from file "set.ml", line 339, characters 28-36
Called from file "set.ml", line 339, characters 28-36
Called from file "typing/typing_check_service.ml", line 87, characters 4-46
Called from file "errors/errors.ml", line 121, characters 17-21
Called from file "errors/errors.ml", line 133, characters 14-18
Called from file "typing/typing_check_service.ml", line 85, characters 20-295
Called from file "list.ml", line 96, characters 24-34
Called from file "third-party/core/core_list.ml" (inlined), line 192, characters 22-47
Called from file "typing/typing_check_service.ml", line 108, characters 15-60
Called from file "server/serverWorker.ml", line 18, characters 6-9
Called from file "procs/workerController.ml", line 179, characters 51-61
Called from file "procs/worker.ml", line 96, characters 4-37
Worker exited (code: 2)
Subprocess(14055): fail 2[2018-06-30 14:58:17.295] MultiThreadedCall.Coalesced_failures(_)
Raised at file "procs/multiThreadedCall.ml", line 161, characters 6-41
Called from file "procs/multiThreadedCall.ml", line 170, characters 4-94
Re-raised at file "procs/multiThreadedCall.ml", line 173, characters 4-11
Called from file "procs/multiThreadedCall.ml", line 188, characters 4-64
Called from file "typing/typing_check_service.ml", line 123, characters 4-219
Called from file "server/serverTypeCheck.ml", line 778, characters 35-137
Called from file "server/serverTypeCheck.ml", line 866, characters 28-55
Called from file "server/serverUtils.ml", line 77, characters 6-10
[2018-06-30 14:58:17.295] Coalesced_failures[(Worker_quit WEXITED 2)]

On my mac, the result is the same but the trace is a little different:

[2018-07-01 16:46:03.980] Initializing Server (This might take some time)
[2018-07-01 16:46:03.980] Init id: fgJpUE8Nt+
[2018-07-01 16:46:03.980] Initing with approach: Local_config_mini_state_disabled
[2018-07-01 16:46:03.980] Begin Indexing
[2018-07-01 16:46:03.981] Indexing: 0.000056
[2018-07-01 16:46:03.981] Begin Parsing
[2018-07-01 16:46:23.390] Heap size: 92474496
[2018-07-01 16:46:23.390] Parsing: 19.409211
[2018-07-01 16:46:23.419] Updating deps: 0.028679
[2018-07-01 16:46:23.419] Begin Naming
[2018-07-01 16:46:23.529] Heap size: 98817280
[2018-07-01 16:46:23.529] Naming: 0.110609
[2018-07-01 16:46:24.029] Updating 8722 search files:: 0.482205
[2018-07-01 16:46:24.029] Done updating search files
[2018-07-01 16:46:24.034] Dependency table load factor: 0 / 1048576 (0.00)
[2018-07-01 16:46:24.036] Hashtable load factor: 134711 / 1048576 (0.13) with 134711 nonempty slots
[2018-07-01 16:46:24.036] Waiting for daemon(s) to be ready...
[2018-07-01 16:46:24.037] Server is partially ready
[2018-07-01 16:46:24.037] Took 20.057010 seconds.
******************************************
[2018-07-01 16:46:24.037] Check kind: Full_check
[2018-07-01 16:46:24.037] Files to recompute: 0
[2018-07-01 16:46:24.037] Begin Parsing 0 files
[2018-07-01 16:46:24.037] Heap size: 105800512
[2018-07-01 16:46:24.037] Parsing 0 files: 0.000515
[2018-07-01 16:46:24.037] Begin Updating deps
[2018-07-01 16:46:24.037] Updating deps: 0.000021
[2018-07-01 16:46:24.037] Begin Naming
[2018-07-01 16:46:24.037] Naming: 0.000019
[2018-07-01 16:46:24.038] Heap size: 105800512
[2018-07-01 16:46:24.038] Determining changes: 0.000452
[2018-07-01 16:46:24.038] Begin Type-decl 0 files
[2018-07-01 16:46:24.038] Heap size: 105800512
[2018-07-01 16:46:24.038] Type-decl 0 files: 0.000455
[2018-07-01 16:46:24.061] Begin Type-check 8722 files
Worker interrupted with signal: sigill
[2018-07-01 16:46:38.339] MultiThreadedCall.Coalesced_failures(_)
Raised at file "procs/multiThreadedCall.ml", line 161, characters 6-41
Called from file "procs/multiThreadedCall.ml", line 170, characters 4-94
Re-raised at file "procs/multiThreadedCall.ml", line 173, characters 4-11
Called from file "procs/multiThreadedCall.ml", line 188, characters 4-64
Called from file "typing/typing_check_service.ml", line 123, characters 4-219
Called from file "server/serverTypeCheck.ml", line 778, characters 35-137
Called from file "server/serverTypeCheck.ml", line 866, characters 28-55
Called from file "server/serverUtils.ml", line 77, characters 6-10
[2018-07-01 16:46:38.339] Coalesced_failures[(Worker_quit WSIGNALED -5)]
[2018-07-01 16:46:38.339] Failure("Coalesced_failures[(Worker_quit WSIGNALED -5)]")
Raised at file "pervasives.ml", line 32, characters 17-33
Called from file "server/serverMain.ml", line 248, characters 21-66
Called from file "server/serverMain.ml", line 368, characters 19-46
Called from file "server/serverMain.ml", line 388, characters 21-114
Called from file "server/serverMain.ml", line 463, characters 12-78
Called from file "server/serverMain.ml", line 695, characters 18-63
Called from file "server/serverUtils.ml", line 77, characters 6-10

Expected result

hh_server does not crash

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions