Skip to content

AMQP-1.0 session, {badarg, [{erlang, iolist_size}] at high consumption rates #12816

@mkuratczyk

Description

@mkuratczyk

Describe the bug

I've seen this in two situations so far:

  • on main, with max_link_credit set to a higher value (1700 - for no particular reason, other than to see the impact)
  • on ra-2.16.0 branch without tweaking max_link_credit. However, the main benefit of ra-2.16 is a higher consumption rate with many consumers and that's exactly when this issue happened.

This is from a main+high max_link_credit env:

reason: {{badarg,
             [{erlang,iolist_size,
                  [[<<112,0,35,30,126>>,
                    [82,-325],
                    <<"pÿÿÿü">>,<<"pÿÿÿÿ">>,67,
                    <<112,0,35,30,126>>,
                    <<112,0,0,6,164>>,
                    64,64,64,64]],
                  [{error_info,#{module => erl_erts_errors}}]},
              {amqp10_binary_generator,generate1,1,
                  [{file,"amqp10_binary_generator.erl"},{line,141}]},
              {amqp10_binary_generator,generate1,1,
                  [{file,"amqp10_binary_generator.erl"},{line,88}]},
              {amqp10_binary_generator,generate,1,
                  [{file,"amqp10_binary_generator.erl"},{line,79}]},
              {rabbit_amqp_writer,assemble_frame,3,
                  [{file,"rabbit_amqp_writer.erl"},{line,206}]},
              {rabbit_amqp_writer,internal_send_command_async,3,
                  [{file,"rabbit_amqp_writer.erl"},{line,189}]},
              {rabbit_amqp_writer,handle_cast,2,
                  [{file,"rabbit_amqp_writer.erl"},{line,110}]},
              {gen_server,try_handle_cast,3,
                  [{file,"gen_server.erl"},{line,1121}]}]},
         {gen_server,call,
             [<0.1759.0>,
              {send_command,0,
                  {'v1_0.end',
                      {'v1_0.error',
                          {symbol,<<"amqp:session:window-violation">>},
                          {utf8,
                              <<"incoming window violation (tolerated excess tranfers: 400)">>},
                          undefined}}},
              300000]}}

and this is from a ra-2.16 with the default 170 credits:

crasher:
  initial call: rabbit_amqp_writer:init/1
  pid: <0.19353.0>
  registered_name: []
  exception error: bad argument
    in function  iolist_size/1
       called as iolist_size([<<112,0,0,23,120>>,
                              [82,-15],
                              <<"pÿÿÿü">>,<<"pÿÿÿÿ">>,67,
                              <<112,0,0,23,120>>,
                              "Rª",64,64,64,64])
       *** argument 1: not an iodata term
    in call from amqp10_binary_generator:generate1/1 (amqp10_binary_generator.erl, line 141)
    in call from amqp10_binary_generator:generate1/1 (amqp10_binary_generator.erl, line 88)
    in call from amqp10_binary_generator:generate/1 (amqp10_binary_generator.erl, line 79)
    in call from rabbit_amqp_writer:assemble_frame/3 (rabbit_amqp_writer.erl, line 206)
    in call from rabbit_amqp_writer:internal_send_command_async/3 (rabbit_amqp_writer.erl, line 189)
    in call from rabbit_amqp_writer:handle_cast/2 (rabbit_amqp_writer.erl, line 110)
    in call from gen_server:try_handle_cast/3 (gen_server.erl, line 1121)

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions