Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

The table identifier does not refer to an existing ETS table #358

Open
samuelventura opened this issue Nov 17, 2021 · 4 comments
Open

The table identifier does not refer to an existing ETS table #358

samuelventura opened this issue Nov 17, 2021 · 4 comments

Comments

@samuelventura
Copy link

I do not know how to replicate this but it has happened a couple times in the BBB. Rebooting the device wont fix it.

iex(5)> VintageNet.info
** (ArgumentError) errors were found at the given arguments:

  * 1st argument: the table identifier does not refer to an existing ETS table

    (stdlib 3.16.1) :ets.match(VintageNet, {:"$1", :"$2", :_})
    (vintage_net 0.11.2) lib/vintage_net/property_table/table.ex:48: VintageNet.PropertyTable.Table.match/2
    (vintage_net 0.11.2) lib/vintage_net/info.ex:41: VintageNet.Info.interfaces_to_show/0
    (vintage_net 0.11.2) lib/vintage_net/info.ex:16: VintageNet.Info.info/1
@fhunleth
Copy link
Member

I've seen this happen when the :vintage_net OTP application isn't started. I'd expect that there will be some exceptions from RingLogger.next. You could try Application.ensure_all_started(:vintage_net).

Having said that, I think that I can improve the error message. But let me know what happens since improving the error message obviously won't help you fix the issue.

@samuelventura
Copy link
Author

We were able to replicate the problem by configuring an address and gateway in different network segments. That is a user error of course but since the impact is large (vintage app won't start any more) vintage should reject such invalid params. We also confirmed that removing the vintage folder in /data partition and rebooting brings the BBB back.

iex(3)> VintageNet.configure("eth0", %{type: VintageNetEthernet, ipv4: %{method: :static, address: "10.77.1.100", prefix_length: 24, gateway: "10.77.0.1", name_servers: ["10.77.0.1"]}})
:ok
iex(4)> VintageNet.info
** (ArgumentError) errors were found at the given arguments:

  * 1st argument: the table identifier does not refer to an existing ETS table

    (stdlib 3.16.1) :ets.match(VintageNet, {:"$1", :"$2", :_})
    (vintage_net 0.11.2) lib/vintage_net/property_table/table.ex:48: VintageNet.PropertyTable.Table.match/2
    (vintage_net 0.11.2) lib/vintage_net/info.ex:41: VintageNet.Info.interfaces_to_show/0
    (vintage_net 0.11.2) lib/vintage_net/info.ex:16: VintageNet.Info.info/1
iex(5)> cmd "rm -fr /data/vintage_net"
0
iex(6)> Application.start :vintage_net
:ok
iex(7)> VintageNet.info               
VintageNet 0.11.2

All interfaces:       ["eth0", "lo", "usb0"]
Available interfaces: []

Interface eth0
  Type: VintageNetEthernet
  Present: true
  State: :configured (1.9 s)
  Connection: :disconnected (2.0 s)
  Addresses: 10.77.1.100/24
  Configuration:
    %{ipv4: %{method: :dhcp}, type: VintageNetEthernet}

Interface usb0
  Type: VintageNetDirect
  Present: true
  State: :configured (1.9 s)
  Connection: :lan (1.9 s)
  Addresses: 172.31.195.245/30
  Configuration:
    %{type: VintageNetDirect}

Interface wlan0
  Type: VintageNetWiFi
  Present: false
  Configuration:
    %{type: VintageNetWiFi}

:ok

@fhunleth
Copy link
Member

Could you post the commands needed to replicate the issue?

@fhunleth
Copy link
Member

Oh, sorry, I didn't scroll to the right. I see it.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants