diff options
author | Erlang/OTP <[email protected]> | 2010-05-28 09:39:40 +0000 |
---|---|---|
committer | Erlang/OTP <[email protected]> | 2010-05-28 09:39:40 +0000 |
commit | 56f23b4aca7c8bfcceeb0095536926ddb1a8102c (patch) | |
tree | 776e4600afde665884bbd6642a48bba1fbbce27e /lib/stdlib/test/gen_server_SUITE.erl | |
parent | 3bfea34b08b4593dbda83677fe2611c4e440fd9a (diff) | |
parent | dab11bf07c66e1f119cc5d6198c8e90c5a02219e (diff) | |
download | otp-56f23b4aca7c8bfcceeb0095536926ddb1a8102c.tar.gz otp-56f23b4aca7c8bfcceeb0095536926ddb1a8102c.tar.bz2 otp-56f23b4aca7c8bfcceeb0095536926ddb1a8102c.zip |
Merge branch 'sv/format_status-name-handling' into dev
* sv/format_status-name-handling:
handle {global, term()} names in format_status/2
OTP-8656 sv/format_status-name-handling
Calling sys:get_status() for processes that have globally registered names
that were not atoms would cause a crash. Corrected. (Thanks to Steve
Vinoski.)
Diffstat (limited to 'lib/stdlib/test/gen_server_SUITE.erl')
-rw-r--r-- | lib/stdlib/test/gen_server_SUITE.erl | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/lib/stdlib/test/gen_server_SUITE.erl b/lib/stdlib/test/gen_server_SUITE.erl index 0966734c89..99388ba2e3 100644 --- a/lib/stdlib/test/gen_server_SUITE.erl +++ b/lib/stdlib/test/gen_server_SUITE.erl @@ -905,6 +905,28 @@ call_format_status(Config) when is_list(Config) -> ?line Status2 = sys:get_status(call_format_status, 5000), ?line {status, Pid, _Mod, [_PDict, running, _Parent, _, Data2]} = Status2, ?line [format_status_called | _] = lists:reverse(Data2), + + %% check that format_status can handle a name being a pid (atom is + %% already checked by the previous test) + ?line {ok, Pid3} = gen_server:start_link(gen_server_SUITE, [], []), + ?line Status3 = sys:get_status(Pid3), + ?line {status, Pid3, _Mod, [_PDict3, running, _Parent, _, Data3]} = Status3, + ?line [format_status_called | _] = lists:reverse(Data3), + + %% check that format_status can handle a name being a term other than a + %% pid or atom + GlobalName1 = {global, "CallFormatStatus"}, + ?line {ok, Pid4} = gen_server:start_link(GlobalName1, + gen_server_SUITE, [], []), + ?line Status4 = sys:get_status(Pid4), + ?line {status, Pid4, _Mod, [_PDict4, running, _Parent, _, Data4]} = Status4, + ?line [format_status_called | _] = lists:reverse(Data4), + GlobalName2 = {global, {name, "term"}}, + ?line {ok, Pid5} = gen_server:start_link(GlobalName2, + gen_server_SUITE, [], []), + ?line Status5 = sys:get_status(GlobalName2), + ?line {status, Pid5, _Mod, [_PDict5, running, _Parent, _, Data5]} = Status5, + ?line [format_status_called | _] = lists:reverse(Data5), ok. %% Verify that error termination correctly calls our format_status/2 fun |