[erlang-questions] Maybe potential incompatibility of file_info record

Shunichi Shinohara shino.shun@REDACTED
Wed Jun 13 03:45:11 CEST 2018


Thanks for the information.
Then, rebar3 (through erlware_commons) should be fixed for OTP-21.

Regards,
Shino


2018-06-12 23:17 GMT+09:00 John Högberg <john.hogberg@REDACTED>:
> Hi,
>
> This is an intentional bugfix, and I've added a release note for it
> now. Thanks for reporting it!
>
> Regards,
> John Högberg
>
> On tor, 2018-06-07 at 17:38 +0900, Shunichi Shinohara wrote:
>> Thanks a lot!!
>>
>> 2018-06-07 17:35 GMT+09:00 Björn Gustavsson <bjorn@REDACTED>:
>> >
>> > Thanks for digging deeper.
>> >
>> > The old efile_driver has been rewritten and
>> > replaced with a NIF. I am not sure whether
>> > this change is an oversight/bug or a deliberate
>> > change. We will look into it before the release
>> > of OTP 21 and either fix the bug or add a
>> > note about the potential incompatibility.
>> >
>> > /Björn
>> >
>> >
>> >
>> > On Thu, Jun 7, 2018 at 8:52 AM, Shunichi Shinohara <shino.shun@REDACTED
>> > l.com> wrote:
>> > >
>> > > I looked into the source code and I think the difference between
>> > > 20
>> > > and 21.0-rc2 is identified.
>> > >
>> > > # The subject of this thread is not suitable,
>> > > # but please let me report to not leave just a wrong information.
>> > >
>> > > First, the difference between OTP 20.3.4 and 21.0-rc2 is as
>> > > follows.
>> > > (on macOS, OTPs are installed from git by kerl)
>> > >
>> > > Setup file a and b, a is owned by root user.
>> > > % rm -f a && rm -f b && sudo touch a && sudo chmod 755 a && touch
>> > > b
>> > >
>> > > Let's start OTP 21.0-rc2 and read file_info of a and write it to
>> > > b,
>> > > it fails:
>> > > % ~/local/otp/OTP-21.0-rc2/bin/erl
>> > > Erlang/OTP 21 [RELEASE CANDIDATE 2] [erts-10.0] [source] [64-bit]
>> > > [smp:8:8] [ds:8:8:10] [async-threads:1] [hipe] [sharing-
>> > > preserving]
>> > >
>> > > Eshell V10.0  (abort with ^G)
>> > > 1> {ok, Fi} = file:read_file_info("a").
>> > > {ok,#file_info{size = 0,type = regular,access = read,
>> > >                atime = {{2018,6,7},{15,32,41}},
>> > >                mtime = {{2018,6,7},{15,32,41}},
>> > >                ctime = {{2018,6,7},{15,32,41}},
>> > >                mode = 33261,links = 1,major_device = 16777220,
>> > >                minor_device = 0,inode = 17846256,uid = 0,gid =
>> > > 20}}
>> > > 2> file:write_file_info("b", Fi).
>> > > {error,eperm}
>> > >
>> > > Then, start OTP 20.3.4 and replay the same step, it succeeds:
>> > > % ~/local/otp/OTP-20.3.4/bin/erl
>> > > Erlang/OTP 20 [erts-9.3] [source] [64-bit] [smp:8:8] [ds:8:8:10]
>> > > [async-threads:10] [hipe] [kernel-poll:false]
>> > >
>> > > Eshell V9.3  (abort with ^G)
>> > > 1> {ok, F} = file:read_file_info("a").
>> > > {ok,#file_info{size = 0,type = regular,access = read,
>> > >                atime = {{2018,6,7},{15,32,41}},
>> > >                mtime = {{2018,6,7},{15,32,41}},
>> > >                ctime = {{2018,6,7},{15,32,41}},
>> > >                mode = 33261,links = 1,major_device = 16777220,
>> > >                minor_device = 0,inode = 17846256,uid = 0,gid =
>> > > 20}}
>> > > 2> file:write_file_info("b", F).
>> > > ok
>> > >
>> > > The file_info records are the same (sorry again...), but the
>> > > results differ.
>> > >
>> > > Looking into unix_efile.c on maint-20 branch:
>> > >     https://github.com/erlang/otp/blob/maint-20/erts/emulator/dri
>> > > vers/unix/unix_efile.c#L572
>> > > it ignores eperm error and proceeds forward:
>> > >     if (chown(name, pInfo->uid, pInfo->gid) && errno != EPERM) {
>> > >
>> > > I'm not sure the difference is judged as incompatibility or not,
>> > > it's nice if this note helps someone (including future me).
>> > >
>> > > Thanks,
>> > > Shino
>> > >
>> > > 2018-06-07 15:07 GMT+09:00 Shunichi Shinohara <shino.shun@REDACTED
>> > > om>:
>> > > >
>> > > > I'm sorry I was wrong. Thanks for correct me, Bjorn.
>> > > > I have to dig the root cause down ;)
>> > > >
>> > > > Shino
>> > > >
>> > > > 2018-06-07 15:04 GMT+09:00 Björn Gustavsson <bjorn@REDACTED>:
>> > > > >
>> > > > > On Thu, Jun 7, 2018 at 7:39 AM, Shunichi Shinohara <shino.shu
>> > > > > n@REDACTED> wrote:
>> > > > > [...]
>> > > > > >
>> > > > > > It seems that some fields are added to file_info record
>> > > > > > between 20 and 21-rc2,
>> > > > > "Seems"?
>> > > > >
>> > > > > No fields have been added for a very long time. The only
>> > > > > modifications done in recent releases are updates
>> > > > > to the types of the existing fields. The last such change
>> > > > > was made at the end of 2015.
>> > > > >
>> > > > > /Bjorn
>> > > > >
>> > > > > --
>> > > > > Björn Gustavsson, Erlang/OTP, Ericsson AB
>> >
>> >
>> > --
>> > Björn Gustavsson, Erlang/OTP, Ericsson AB



More information about the erlang-questions mailing list