[erlang-questions] beam crasher: ets + write_concurrency

Angel Alvarez clist@REDACTED
Thu Oct 8 21:15:51 CEST 2009


This crash is repeatable, reproducced on OpenSUSE 10.3 

this code crash the emulator on SMP mode..

-module(crash).
-export([crash/0]).

crash() ->
	T = ets:new(?MODULE, [{write_concurrency, true}]),
	ets:insert_new(T, {foo, 1}),
	ets:match(T, {nosuchvalue, '$1'}).


sinosuke@REDACTED:~/Documents/Personal/Erlang/Code> erl
Erlang R13B01 (erts-5.7.2) [source] [rq:1] [async-threads:0] [hipe] [kernel-poll:false]

Eshell V5.7.2  (abort with ^G)
1> crash:crash().
[]
2>

3> sinosuke@REDACTED:~/Documents/Personal/Erlang/Code> erl -smp on
Erlang R13B01 (erts-5.7.2) [source] [smp:1:1] [rq:1] [async-threads:0] [hipe] [kernel-poll:false]

Eshell V5.7.2  (abort with ^G)
1> crash:crash().
Violación de segmento
sinosuke@REDACTED:~/Documents/Personal/Erlang/Code>

/Angel

El Jueves, 8 de Octubre de 2009 Dave Smith escribió:
> Greetings,
> 
> I believe that I have identified a VM crasher when using ETS with
> write concurrency enabled. Sample code is as follows:
> 
> T = ets:new(?MODULE, [{write_concurrency, true}]),
> ets:insert_new(T, {foo, 1}),
> ets:match(T, {nosuchvalue, '$1'}).
> 
> GDB stack trace shows:
> 
> Program received signal EXC_BAD_ACCESS, Could not access memory.
> Reason: KERN_INVALID_ADDRESS at address: 0x0000000000000008
> [Switching to process 69425]
> 0x00000001000c894b in db_select_chunk_hash (p=0x101466398,
> tbl=0x1013b6eb0, pattern=4330115329, chunk_size=0, reverse=0,
> ret=0x102185080) at beam/erl_db_hash.c:1426
> 1426		if (current->hvalue != INVALID_HASH &&
> (gdb) bt
> #0  0x00000001000c894b in db_select_chunk_hash (p=0x101466398,
> tbl=0x1013b6eb0, pattern=4330115329, chunk_size=0, reverse=0,
> ret=0x102185080) at beam/erl_db_hash.c:1426
> #1  0x00000001000c85f2 in db_select_hash (p=0x101466398,
> tbl=0x1013b6eb0, pattern=4330115329, reverse=0, ret=0x102185080) at
> beam/erl_db_hash.c:1344
> #2  0x00000001000b1c6f in ets_select_2 (A__p=0x101466398, A_1=262367,
> A_2=4330115329) at beam/erl_db.c:2136
> #3  0x00000001000b1524 in ets_match_2 (A__p=0x101466398, A_1=262367,
> A_2=4335025986) at beam/erl_db.c:1940
> #4  0x000000010011e5ed in process_main () at beam/beam_emu.c:2084
> #5  0x000000010007ed86 in sched_thread_func (vesdp=0x1007812e8) at
> beam/erl_process.c:3015
> #6  0x00000001001a3360 in thr_wrapper (vtwd=0x7fff5fbff0e0) at
> common/ethread.c:475
> #7  0x00007fff819a2e19 in thread_start ()
> (gdb)
> 
> 
> This crash was repeatable on the following platforms:
> 
> OS X 10.6 (Snow Leopard), 64-bit and 32-bit VM
> OS X 10.5 (Leopard), 32-bit VM
> Debian Linux 2.6 x86_64, 64-bit VM
> 
> Erlang versions tested: R13B01, R13B02-1
> 
> Thanks,
> 
> D.
> 
> ________________________________________________________________
> erlang-questions mailing list. See http://www.erlang.org/faq.html
> erlang-questions (at) erlang.org
> 
> 



-- 
No imprima este correo si no es necesario. El medio ambiente está en nuestras manos.
->>-----------------------------------------------
    Clist UAH a.k.a Angel
---------------------------------[www.uah.es]-<<--

...being the second biggest search engine in the world is good enough for us. Peter @ Pirate Bay.


More information about the erlang-questions mailing list