|
70 | 70 | bad_binary_to_term_2/1,safe_binary_to_term2/1, |
71 | 71 | bad_binary_to_term/1, bad_terms/1, more_bad_terms/1, |
72 | 72 | big_binary_to_term/1, |
| 73 | + binary_to_term_trap_crash/1, |
73 | 74 | otp_5484/1,otp_5933/1, |
74 | 75 | ordering/1,unaligned_order/1,gc_test/1, |
75 | 76 | bit_sized_binary_sizes/1, |
@@ -101,6 +102,7 @@ all() -> |
101 | 102 | bad_binary_to_term_2, safe_binary_to_term2, |
102 | 103 | bad_binary_to_term, bad_terms, t_hash, bad_size, |
103 | 104 | big_binary_to_term, |
| 105 | + binary_to_term_trap_crash, |
104 | 106 | sub_bin_copy, bad_term_to_binary, t2b_system_limit, |
105 | 107 | term_to_iovec, more_bad_terms, |
106 | 108 | unsorted_map_in_map, |
@@ -1972,6 +1974,23 @@ trapping_loop2(Bif,Args,N) -> |
1972 | 1974 | apply(erlang,Bif,Args), |
1973 | 1975 | trapping_loop2(Bif, Args, N-1). |
1974 | 1976 |
|
| 1977 | +%% GH-11404: Bug caused SEGV or failed ASSERT. |
| 1978 | +binary_to_term_trap_crash(Config) -> |
| 1979 | + Term = {0,"1234567890123456",0,0,0,0,0,0, |
| 1980 | + [1 bsl 47], [], {127,0,0,1}, |
| 1981 | + 0,[],[],[],[],[],[],[],[],[],[],0,[],"123456789",[],[],0,0, |
| 1982 | + 0,[],0,[],[],[],[],[],1,[],[],[],[],[],[],0,0,"123",[],0,[], |
| 1983 | + 1,[],[],[],0,0,{0,0},0,[],0,0,0,[],[],0,[],0,0,[]}, |
| 1984 | + Bin = term_to_binary(Term), |
| 1985 | + CONTEXT_REDS = erlang:system_info(context_reductions), |
| 1986 | + [begin |
| 1987 | + erlang:yield(), |
| 1988 | + erlang:bump_reductions(I), |
| 1989 | + binary_to_term(Bin) |
| 1990 | + end |
| 1991 | + || I <- lists:seq(1,CONTEXT_REDS)], |
| 1992 | + ok. |
| 1993 | + |
1975 | 1994 | large(Config) when is_list(Config) -> |
1976 | 1995 | List = lists:flatten(lists:map(fun (_) -> |
1977 | 1996 | [0,1,2,3,4,5,6,7,8] |
|
0 commit comments