diff options
author | Mikael Pettersson <[email protected]> | 2010-01-27 11:40:10 +0100 |
---|---|---|
committer | Björn Gustavsson <[email protected]> | 2010-01-27 16:35:07 +0100 |
commit | 24146d322cd165c995d3a698e888cdb6f7a10741 (patch) | |
tree | ef5a59da1332e94be5b5e45cca6e823cb5302083 /erts/emulator/beam | |
parent | 38cec58103fb69b995e29cdd186061b8dc233d9d (diff) | |
download | otp-24146d322cd165c995d3a698e888cdb6f7a10741.tar.gz otp-24146d322cd165c995d3a698e888cdb6f7a10741.tar.bz2 otp-24146d322cd165c995d3a698e888cdb6f7a10741.zip |
work around hipe_mfa_info_table lock omission
HiPE maintains per-MFA information such as native code entry
point in a table. This table was thought to be read-only at
runtime, except when the loader populates it, so it employed
no locking. That turned out to be incorrect: if there is an
apply of a previously unseen MFA, a native code stub for that
MFA is created and recorded in the table, causing it to grow.
Work around this for now by slapping a mutex around accesses
to that table.
Signed-off-by: Mikael Pettersson <[email protected]>
Diffstat (limited to 'erts/emulator/beam')
-rw-r--r-- | erts/emulator/beam/erl_lock_check.c | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/erts/emulator/beam/erl_lock_check.c b/erts/emulator/beam/erl_lock_check.c index 25f1d420d1..937916272c 100644 --- a/erts/emulator/beam/erl_lock_check.c +++ b/erts/emulator/beam/erl_lock_check.c @@ -75,6 +75,9 @@ static erts_lc_lock_order_t erts_lock_order[] = { * the lock name)" */ #ifdef ERTS_SMP +#ifdef HIPE + { "hipe_mfait_lock", NULL }, +#endif { "driver_lock", "driver_name" }, { "port_lock", "port_id" }, #endif |