Andrei5223 / uffsdb

Grupo: Andrei, Djonatan, Bernardo e Gustavo
MIT License
0 stars 1 forks source link

Falha de alocação de memória ao criar relações #3

Open Andrei5223 opened 7 months ago

Andrei5223 commented 7 months ago

O bug consiste numa falha de alocação de memória: free(): invalid pointer Aborted (core dumped) Para a reprodução desse bug, garanta que a pasta 'Data' esteja vazia ou inexistente. A pasta 'Data' é criada na primeira inicialização do BD, portanto, a ausência dela garante um estado inicial consistente. Execute o código abaixo (copie e cole):

create database banco; \c banco create table Funcionario ( rg integer primary key, nome varchar(30), idade integer, cidade varchar(30), salario double);

Screenshot from 2024-04-14 19-23-17

Andrei5223 commented 7 months ago

Após a reprodução do bug descrito, pode-se reproduzir mais um bug de alocação de memória. Entre novamente no BD e acesse o banco 'banco'. Nos meus testes o banco e a relação 'funcionario' foi criada mesmo após o erro. Execute o código abaixo (copie e cole):

insert into Funcionario values (2158750,'fLucas',20,'Xanxere',2537.00); insert into Funcionario values (2158751,'fRafael',23,'Chapeco',1537.00);

Deverá ocorrer novamente um BUG de alocação de memória: free(): invalid pointer Aborted (core dumped) Screenshot from 2024-04-14 19-26-05

Andrei5223 commented 7 months ago

Suspeitei que o erro causou uma criação falha da relação 'funcionario', o que poderia ter causado a segunda falha, porém, essa teoria não está correta. Após a reprodução do bug inicial (criação de tabela), acessei o banco novamente, exclui a relação funcionário e criei novamente, dessa vez não ouve erro na criação. Porém, ao executar os dois INSERT descritos acima, a falha de inserção persistiu. Essa explicação pode ser reproduzida com a execução do código abaixo, se executada imediamente ao acessar o banco após a reprodução do bug causado pela criação da tabela.

\c banco drop table funcionario; create table Funcionario ( rg integer primary key, nome varchar(30), idade integer, cidade varchar(30), salario double); insert into Funcionario values (2158750,'fLucas',20,'Xanxere',2537.00); insert into Funcionario values (2158751,'fRafael',23,'Chapeco',1537.00); Screenshot from 2024-04-14 19-29-30