[erlang-bugs] mnesia/dets breakage when otp R15B03-1 is compiled by gcc 4.8 or 4.9

Mikael Pettersson mikpelinux@REDACTED
Thu Dec 5 14:00:30 CET 2013


Sverker Eriksson writes:
 > This commit seems like yet a bug fix for the this fix.
 > 
 > c4da6eed78d30670d3602f746030e03c46137ead
 > Fix EV_* macros and functions signedness flaws

I saw that one too.  It seems related but doesn't backport cleanly
(hunk #4 fails to apply) -- the problematic hunk seems redundant
so I'll try with it omitted.

/Mikael

 > 
 > /Sverker, Erlang/OTP
 > 
 > 
 > On 12/05/2013 12:54 PM, Mikael Pettersson wrote:
 > > Lukas Larsson writes:
 > >   > Hello,
 > >   >
 > >   > Could it be OTP-11246? It is the only gcc version related patch that I
 > >   > can think of.
 > >
 > > Both test cases, mine and Erik's, are fixed by backporting two commits,
 > >
 > > >From 9f3dc09c1a70bd485b211768bedf989bed7fbf21 Mon Sep 17 00:00:00 2001
 > > From: Lukas Larsson <lukas@REDACTED>
 > > Date: Mon, 12 Aug 2013 16:04:31 +0200
 > > Subject: [PATCH] erts: Refactor non-pure macros to functions
 > >
 > > and
 > >
 > > >From 3b1d9f46c187ecdad3930c52fa4fbe4d547277c8 Mon Sep 17 00:00:00 2001
 > > From: Lukas Larsson <lukas@REDACTED>
 > > Date: Tue, 20 Aug 2013 17:19:36 +0200
 > > Subject: [PATCH] erts: Fix bug in translating ev macros to functions
 > >
 > > The first one suffices for the test cases, but the second one fixes
 > > apparent errors in the first one so I'll treat them as a unit.
 > >
 > > I'll run some more tests on our full code base.
 > >
 > > /Mikael
 > >
 > >   >
 > >   > Lukas
 > >   >
 > >   > On 04/12/13 15:00, Mikael Pettersson wrote:
 > >   > > We're using otp R15B03-1 on x86_64-linux.  During initialization of our
 > >   > > application we create a bunch of mnesia disc_copies tables.  If otp
 > >   > > was compiled by gcc 4.8 or 4.9, then during the creation of the 257th
 > >   > > mnesia table DETS spews the following warning
 > >   > >
 > >   > > dets: file "/.../Mnesia.nonode@REDACTED/schema.DAT" not properly closed, repairing ...
 > >   > >
 > >   > > but the mnesia:create_table/2 call doesn't fail.  However the schema.DAT
 > >   > > file is corrupt and subsequent usage of mnesia fails.
 > >   > >
 > >   > > If otp R15B03-1 is compiled with gcc 4.7 or 4.6 the problem doesn't occur.
 > >   > >
 > >   > > If we use otp R16B02 compiled by gcc 4.8 or 4.9 the problem doesn't occur.
 > >   > >
 > >   > > At the moment we can't upgrade to R16B02, and as our developers upgrade their
 > >   > > machines to newer Linux distributions they get gcc-4.8 as their system compiler
 > >   > > and things break.
 > >   > >
 > >   > > Are there any known bug fixes in R16 that may be related to this?
 > >   > >
 > >   > > I'm appending the trivial reproducer below.
 > >   > >
 > >   > > /Mikael
 > >   > >
 > >   > > -module(bug).
 > >   > > -compile(export_all).
 > >   > > doit() ->
 > >   > >      mnesia:delete_schema([node()]),
 > >   > >      mnesia:create_schema([node()]),
 > >   > >      mnesia:start(),
 > >   > >      doit(0).
 > >   > >
 > >   > > doit(I) when I < 260 ->
 > >   > >      D0 = $0 + (I rem 10),
 > >   > >      D1 = $0 + ((I div 10) rem 10),
 > >   > >      D2 = $0 + ((I div 100) rem 10),
 > >   > >      Name = list_to_atom([$f, $o, $o, D2, D1, D0]),
 > >   > >      io:format("creating table ~p~n", [Name]),
 > >   > >      TabDef = [{disc_copies,[node()]}, {type,set}, {attributes,[key,val]}],
 > >   > >      {atomic, ok} = mnesia:create_table(Name, TabDef),
 > >   > >      doit(I + 1);
 > >   > > doit(_I) ->
 > >   > >      ok.
 > >   > > _______________________________________________
 > >   > > erlang-bugs mailing list
 > >   > > erlang-bugs@REDACTED
 > >   > > http://erlang.org/mailman/listinfo/erlang-bugs
 > >   > >
 > >   >
 > >   > _______________________________________________
 > >   > erlang-bugs mailing list
 > >   > erlang-bugs@REDACTED
 > >   > http://erlang.org/mailman/listinfo/erlang-bugs
 > >

-- 



More information about the erlang-bugs mailing list