Fix memory leaks in unit tests

This commit is contained in:
Ismael Gomez 2018-05-03 17:36:39 +02:00
parent 3a9f144ff3
commit 4ffee4326b
27 changed files with 68 additions and 16 deletions

View File

@ -286,8 +286,8 @@ int srslte_chest_ul_estimate(srslte_chest_ul_t *q, cf_t *input, cf_t *ce,
if (ce != NULL) { if (ce != NULL) {
if (q->smooth_filter_len > 0) { if (q->smooth_filter_len > 0) {
average_pilots(q, q->pilot_estimates, ce, nrefs_sym, n_prb); average_pilots(q, q->pilot_estimates, ce, nrefs_sym, n_prb);
interpolate_pilots(q, ce, nrefs_sym, n_prb); interpolate_pilots(q, ce, nrefs_sym, n_prb);
/* If averaging, compute noise from difference between received and averaged estimates */ /* If averaging, compute noise from difference between received and averaged estimates */
q->noise_estimate = estimate_noise_pilots(q, ce, nrefs_sym, n_prb); q->noise_estimate = estimate_noise_pilots(q, ce, nrefs_sym, n_prb);
} else { } else {
@ -301,8 +301,7 @@ int srslte_chest_ul_estimate(srslte_chest_ul_t *q, cf_t *input, cf_t *ce,
q->noise_estimate = 0; q->noise_estimate = 0;
} }
} }
// Estimate received pilot power
// Estimate received pilot power
q->pilot_power = srslte_vec_avg_power_cf(q->pilot_recv_signal, nrefs_sf); q->pilot_power = srslte_vec_avg_power_cf(q->pilot_recv_signal, nrefs_sf);
return 0; return 0;
} }

View File

@ -117,6 +117,7 @@ int main(int argc, char **argv) {
perror("srslte_vec_malloc"); perror("srslte_vec_malloc");
goto do_exit; goto do_exit;
} }
bzero(ce, num_re*sizeof(cf_t));
if (cell.id == 1000) { if (cell.id == 1000) {
cid = 0; cid = 0;

View File

@ -244,6 +244,7 @@ int main(int argc, char **argv) {
for (j=0;j<coded_length;j++) { for (j=0;j<coded_length;j++) {
llr_s[j] = (int16_t) (100*llr[j]); llr_s[j] = (int16_t) (100*llr[j]);
} }
/* decoder */ /* decoder */
srslte_tdec_reset(&tdec, frame_length); srslte_tdec_reset(&tdec, frame_length);
@ -259,11 +260,12 @@ int main(int argc, char **argv) {
for (int n=0;n<SRSLTE_TDEC_MAX_NPAR;n++) { for (int n=0;n<SRSLTE_TDEC_MAX_NPAR;n++) {
if (n < nof_cb) { if (n < nof_cb) {
input[n] = llr_s; input[n] = llr_s;
output[n] = data_rx_bytes[n];
} else { } else {
input[n] = NULL; input[n] = NULL;
output[n] = NULL;
} }
output[n] = data_rx_bytes[n];
} }
gettimeofday(&tdata[1], NULL); gettimeofday(&tdata[1], NULL);
@ -297,13 +299,18 @@ int main(int argc, char **argv) {
if (errors) { if (errors) {
printf("%d Errors\n", errors/nof_cb); printf("%d Errors\n", errors/nof_cb);
} }
} }
for (int cb=0;cb<SRSLTE_TDEC_MAX_NPAR;cb++) {
if (data_rx_bytes[cb]) {
free(data_rx_bytes[cb]);
}
}
free(data_tx); free(data_tx);
free(symbols); free(symbols);
free(llr); free(llr);
free(llr_c); free(llr_c);
free(llr_s);
free(data_rx); free(data_rx);
srslte_tdec_free(&tdec); srslte_tdec_free(&tdec);

View File

@ -278,6 +278,7 @@ int main(int argc, char **argv) {
free(symbols); free(symbols);
free(llr); free(llr);
free(llr_c); free(llr_c);
free(llr_s);
free(data_rx); free(data_rx);
free(data_rx2); free(data_rx2);

View File

@ -513,7 +513,9 @@ void srslte_tdec_simd_decision_byte_cb(srslte_tdec_simd_t * h, uint8_t *output,
void srslte_tdec_simd_decision_byte(srslte_tdec_simd_t * h, uint8_t *output[SRSLTE_TDEC_MAX_NPAR], uint32_t long_cb) void srslte_tdec_simd_decision_byte(srslte_tdec_simd_t * h, uint8_t *output[SRSLTE_TDEC_MAX_NPAR], uint32_t long_cb)
{ {
for (int i=0;i<h->max_par_cb;i++) { for (int i=0;i<h->max_par_cb;i++) {
srslte_tdec_simd_decision_byte_cb(h, output[i], i, long_cb); if (output[i]) {
srslte_tdec_simd_decision_byte_cb(h, output[i], i, long_cb);
}
} }
} }

View File

@ -333,5 +333,11 @@ int main(int argc, char **argv) {
} }
} }
for (i = 0; i < nof_tx_ports; i++) {
if (y[i]) {
free(y[i]);
}
}
exit(ret); exit(ret);
} }

View File

@ -232,6 +232,8 @@ int main(int argc, char **argv) {
} while(nread > 0 && frame_cnt < nof_frames); } while(nread > 0 && frame_cnt < nof_frames);
base_free(); base_free();
srslte_dft_exit();
if (frame_cnt == 1) { if (frame_cnt == 1) {
if (n == 0) { if (n == 0) {
printf("Could not decode PBCH\n"); printf("Could not decode PBCH\n");

View File

@ -144,6 +144,7 @@ int main(int argc, char **argv) {
srslte_vec_fprint_hex(stdout, bch_payload_tx, SRSLTE_BCH_PAYLOAD_LEN); srslte_vec_fprint_hex(stdout, bch_payload_tx, SRSLTE_BCH_PAYLOAD_LEN);
printf("Rx payload: "); printf("Rx payload: ");
srslte_vec_fprint_hex(stdout, bch_payload_rx, SRSLTE_BCH_PAYLOAD_LEN); srslte_vec_fprint_hex(stdout, bch_payload_rx, SRSLTE_BCH_PAYLOAD_LEN);
srslte_dft_exit();
if (nof_rx_ports == cell.nof_ports && !memcmp(bch_payload_rx, bch_payload_tx, sizeof(uint8_t) * SRSLTE_BCH_PAYLOAD_LEN)) { if (nof_rx_ports == cell.nof_ports && !memcmp(bch_payload_rx, bch_payload_tx, sizeof(uint8_t) * SRSLTE_BCH_PAYLOAD_LEN)) {
printf("OK\n"); printf("OK\n");

View File

@ -239,6 +239,7 @@ int main(int argc, char **argv) {
printf("cfi: %d, distance: %f\n", cfi, cfi_corr); printf("cfi: %d, distance: %f\n", cfi, cfi_corr);
base_free(); base_free();
srslte_dft_exit();
if (n < 0) { if (n < 0) {
fprintf(stderr, "Error decoding PCFICH\n"); fprintf(stderr, "Error decoding PCFICH\n");

View File

@ -154,6 +154,7 @@ int main(int argc, char **argv) {
srslte_regs_free(&regs); srslte_regs_free(&regs);
cid++; cid++;
} }
srslte_dft_exit();
for (i=0;i<SRSLTE_MAX_PORTS;i++) { for (i=0;i<SRSLTE_MAX_PORTS;i++) {
free(ce[i]); free(ce[i]);

View File

@ -288,5 +288,6 @@ int main(int argc, char **argv) {
} while (frame_cnt <= max_frames); } while (frame_cnt <= max_frames);
base_free(); base_free();
srslte_dft_exit();
exit(ret); exit(ret);
} }

View File

@ -359,5 +359,6 @@ quit:
} else { } else {
printf("Ok\n"); printf("Ok\n");
} }
srslte_dft_exit();
exit(ret); exit(ret);
} }

View File

@ -162,6 +162,7 @@ int main(int argc, char **argv) {
int nof_frames; int nof_frames;
int ret; int ret;
bool acks[SRSLTE_MAX_TB]; bool acks[SRSLTE_MAX_TB];
bzero(acks, sizeof(bool)*SRSLTE_MAX_TB);
if (argc < 3) { if (argc < 3) {
usage(argv[0]); usage(argv[0]);
@ -199,6 +200,7 @@ int main(int argc, char **argv) {
} while (nof_frames <= max_frames && ret == 0); } while (nof_frames <= max_frames && ret == 0);
base_free(); base_free();
srslte_dft_exit();
if (data[0]) if (data[0])
free(data[0]); free(data[0]);
if (ret > 0) { if (ret > 0) {

View File

@ -546,5 +546,6 @@ quit:
} else { } else {
printf("Ok\n"); printf("Ok\n");
} }
srslte_dft_exit();
exit(ret); exit(ret);
} }

View File

@ -278,6 +278,7 @@ int main(int argc, char **argv) {
} }
base_free(); base_free();
srslte_dft_exit();
if (n < 0) { if (n < 0) {
fprintf(stderr, "Error decoding phich\n"); fprintf(stderr, "Error decoding phich\n");

View File

@ -215,6 +215,7 @@ int main(int argc, char **argv) {
} }
free(slot_symbols[i]); free(slot_symbols[i]);
} }
srslte_dft_exit();
printf("OK\n"); printf("OK\n");
exit(0); exit(0);
} }

View File

@ -202,6 +202,7 @@ int main(int argc, char **argv) {
if (data != NULL) { if (data != NULL) {
free(data); free(data);
} }
srslte_dft_exit();
if (ret > 0) { if (ret > 0) {
exit(0); exit(0);
} else { } else {

View File

@ -430,6 +430,15 @@ int main(int argc, char **argv) {
ret = SRSLTE_SUCCESS; ret = SRSLTE_SUCCESS;
quit: quit:
for (i = 0; i < nof_rx_antennas; i++) {
srslte_ofdm_tx_free(&ifft_mbsfn[i]);
srslte_ofdm_rx_free(&fft_mbsfn[i]);
if (rx_sf_symbols[i]) {
free(rx_sf_symbols[i]);
}
}
srslte_pmch_free(&pmch_tx); srslte_pmch_free(&pmch_tx);
srslte_pmch_free(&pmch_rx); srslte_pmch_free(&pmch_rx);
for (i = 0; i < SRSLTE_MAX_CODEWORDS; i++) { for (i = 0; i < SRSLTE_MAX_CODEWORDS; i++) {
@ -453,6 +462,9 @@ quit:
} }
for (i=0;i<SRSLTE_MAX_PORTS;i++) { for (i=0;i<SRSLTE_MAX_PORTS;i++) {
if (tx_sf_symbols[i]) {
free(tx_sf_symbols[i]);
}
for (j = 0; j < SRSLTE_MAX_PORTS; j++) { for (j = 0; j < SRSLTE_MAX_PORTS; j++) {
if (ce[i][j]) { if (ce[i][j]) {
free(ce[i][j]); free(ce[i][j]);

View File

@ -123,6 +123,7 @@ int main(int argc, char **argv) {
srslte_prach_free(p); srslte_prach_free(p);
free(p); free(p);
srslte_dft_exit();
printf("Done\n"); printf("Done\n");
exit(0); exit(0);

View File

@ -138,7 +138,7 @@ int main(int argc, char **argv) {
srslte_prach_free(p); srslte_prach_free(p);
free(p); free(p);
srslte_dft_exit();
printf("Done\n"); printf("Done\n");
exit(0); exit(0);
} }

View File

@ -235,6 +235,7 @@ int main(int argc, char **argv) {
srslte_rf_close(&rf); srslte_rf_close(&rf);
srslte_prach_free(p); srslte_prach_free(p);
free(p); free(p);
srslte_dft_exit();
printf("Done\n"); printf("Done\n");
exit(0); exit(0);

View File

@ -244,5 +244,6 @@ quit:
} else { } else {
printf("Ok\n"); printf("Ok\n");
} }
srslte_dft_exit();
exit(ret); exit(ret);
} }

View File

@ -295,6 +295,7 @@ quit:
srslte_pusch_free(&pusch_tx); srslte_pusch_free(&pusch_tx);
srslte_pusch_free(&pusch_rx); srslte_pusch_free(&pusch_rx);
srslte_softbuffer_tx_free(&softbuffer_tx); srslte_softbuffer_tx_free(&softbuffer_tx);
srslte_softbuffer_rx_free(&softbuffer_rx);
if (sf_symbols) { if (sf_symbols) {
free(sf_symbols); free(sf_symbols);
@ -310,5 +311,6 @@ quit:
} else { } else {
printf("Ok\n"); printf("Ok\n");
} }
srslte_dft_exit();
exit(ret); exit(ret);
} }

View File

@ -106,6 +106,7 @@ int main(int argc, char **argv) {
srslte_cfo_free(&cfocorr); srslte_cfo_free(&cfocorr);
free(input); free(input);
free(output); free(output);
srslte_dft_exit();
printf("MSE: %f\n", mse); printf("MSE: %f\n", mse);
if (mse > MAX_MSE) { if (mse > MAX_MSE) {

View File

@ -185,6 +185,7 @@ int main(int argc, char **argv) {
srslte_sync_free(&syncobj); srslte_sync_free(&syncobj);
srslte_ofdm_tx_free(&ifft); srslte_ofdm_tx_free(&ifft);
srslte_dft_exit();
printf("Ok\n"); printf("Ok\n");
exit(0); exit(0);

View File

@ -49,26 +49,27 @@ void* write_thread(void *a) {
int main(int argc, char **argv) { int main(int argc, char **argv) {
bool result; bool result;
msg_queue q; msg_queue *q = new msg_queue;
byte_buffer_t *b; byte_buffer_t *b;
pthread_t thread; pthread_t thread;
args_t args; args_t args;
u_int32_t r; u_int32_t r;
result = true; result = true;
args.q = &q; args.q = q;
pthread_create(&thread, NULL, &write_thread, &args); pthread_create(&thread, NULL, &write_thread, &args);
for(uint32_t i=0;i<NMSGS;i++) for(uint32_t i=0;i<NMSGS;i++)
{ {
q.read(&b); q->read(&b);
memcpy(&r, b->msg, 4); memcpy(&r, b->msg, 4);
delete b; delete b;
if(r != i) if(r != i)
result = false; result = false;
} }
delete q;
pthread_join(thread, NULL); pthread_join(thread, NULL);
if(result) { if(result) {

View File

@ -51,8 +51,11 @@ void nas_test() {
uint8 msg_type; uint8 msg_type;
LIBLTE_BYTE_MSG_STRUCT buf; LIBLTE_BYTE_MSG_STRUCT buf;
LIBLTE_MME_ATTACH_ACCEPT_MSG_STRUCT attach_accept; LIBLTE_MME_ATTACH_ACCEPT_MSG_STRUCT attach_accept;
bzero(&attach_accept, sizeof(LIBLTE_MME_ATTACH_ACCEPT_MSG_STRUCT));
LIBLTE_MME_ACTIVATE_DEFAULT_EPS_BEARER_CONTEXT_REQUEST_MSG_STRUCT act_def_eps_bearer_context_req; LIBLTE_MME_ACTIVATE_DEFAULT_EPS_BEARER_CONTEXT_REQUEST_MSG_STRUCT act_def_eps_bearer_context_req;
bzero(&act_def_eps_bearer_context_req, sizeof(LIBLTE_MME_ACTIVATE_DEFAULT_EPS_BEARER_CONTEXT_REQUEST_MSG_STRUCT));
bzero(&buf, sizeof(LIBLTE_BYTE_MSG_STRUCT));
memcpy(buf.msg, nas_message, nas_message_len); memcpy(buf.msg, nas_message, nas_message_len);
buf.N_bytes = nas_message_len; buf.N_bytes = nas_message_len;
liblte_mme_parse_msg_header(&buf, &pd, &msg_type); liblte_mme_parse_msg_header(&buf, &pd, &msg_type);